6

私が試した JUnit のすべてのバージョン (4.8.1 まで) で、assertThat が失敗すると、次のようなエラー メッセージが表示されます。

expected: [describeTo]
got: [オブジェクトの文字列表現]

つまり、Matcher からの不一致の説明ではなく、オブジェクトの toString() が表示されます。org.hamcrest.MatcherAssert.assertThat の assertThat を使用すると、「describeMismatch」が呼び出され、より役立つエラー メッセージが表示されます。

Junit の使い方が間違っているのでしょうか、それとも現在、私がやりたいことができる JUnit のバージョンがありませんか? それでは、ほとんどの人は Hamcrest assertThat を使用しますか?

4

3 に答える 3

3

短い答え:いいえ。

私の知る限り、Hamcrest の最新バージョン (1.2) には、JUnit が現在依存しているバージョン 1.1 と互換性のない型シグネチャが導入されています。Hamcrest の変更によって生じた (いわば) 損害の程度はわかりませんが、JUnit チームがアップグレードを急いでいるようには見えません (未解決の問題を参照)。

問題が解決したかどうかは完全にはわかりませんが、使用する予定ですMatcherAssert.assertThat()。これには、Hamcrest とクラスパスが競合しない JUnit の特定のリリース (junit-dep-xxx だと思います) が必要になる場合があります。そうしないと、 が に電話をかけたNoSuchMethodErrorsときにを受信する場合があります。assertThat()describeMismatch()

于 2010-10-31T16:21:35.627 に答える
0

他のバージョン を使用assertThat(String, T, Matcher<T>)し、最初の引数に独自のメッセージを記述して、失敗をより適切に説明します。

于 2010-10-12T14:28:29.400 に答える