AssertクラスのJavaDocの例を見ると
assertThat("Help! Integers don't work", 0, is(1)); // fails:
// failure message:
// Help! Integers don't work
// expected: is <1>
// got value: <0>
assertThat("Zero is one", 0, is(not(1))) // passes
たとえば、 と比べて大きな利点は見当たりませんassertEquals( 0, 1 )
。
構造がより複雑になると、メッセージにとっては良いことかもしれませんが、もっと利点があると思いますか? 読みやすさでしょうか?
ベストアンサー1
assertFoo
意図と完全に一致する が存在する場合、大きな利点はありません。その場合、それらはほぼ同じように動作します。
しかし、もう少し複雑なチェックになると、その利点がより顕著になります。
val foo = List.of("someValue");
assertTrue(foo.contains("someValue") && foo.contains("anotherValue"));
Expected: is <true>
but: was <false>
対
val foo = List.of("someValue");
assertThat(foo, containsInAnyOrder("someValue", "anotherValue"));
Expected: iterable with items ["someValue", "anotherValue"] in any order
but: no item matches: "anotherValue" in ["someValue"]
どちらが読みやすいかは議論の余地がありますが、アサートが失敗すると、 からは適切なエラー メッセージが表示されますassertThat
が、 からはごくわずかな情報しか得られませんassertTrue
。