28

マッチャーをTestNGアサーションで簡単に使用できるように、HamcrestをTestNGと統合した人はいますか?

4

3 に答える 3

49

要するに、あなたの質問に答えるには: TestNG を Hamcrest と統合する必要はありません。org.hamcrest.MatcherAssert.assertThat(...)を直接呼び出すだけjava.lang.AssertionErrorです。

バックグラウンド

まったく同じ問題について疑問に思って、Google経由であなたの質問を見つけました。さらにグーグルで検索しても満足のいく答えが見つからなかったので、JUnit と Hamcrest の統合のソース コードを読みました。

JUnit では、Hamcrest 統合は通常、以下を呼び出して使用されます。

org.junit.Assert.assertThat(
    T actual,
    org.hamcrest.Matcher<? super T> matcher)

ソース コードを読んだとき、呼び出すのは小さなラッパーにすぎないことがわかりました。

org.hamcrest.MatcherAssert.assertThat(
    String reason,
    T actual,
    org.hamcest.Matcher<? super T> matcher)

この関数は をスローしjava.lang.AssertionErrorます。

于 2013-05-11T06:28:04.540 に答える
2

空のメソッドで問題に直面している場合はhamcrest、依存関係リストに最初に追加することをお勧めします。または最初にインポートhamcrestすると、問題が解決します。

Rexsl (内部的に Hamcrest を使用) で TestNJ を使用していましたが、空のメソッドが見つかりません。次に、依存関係リストに最初に rexsl を追加しました。クラスパスにライブラリを追加する場合は、最初に Hamcrest を追加してみてください。

私のような人に役立つことを願っています。

于 2012-11-28T06:43:28.173 に答える