JUnit 4でHamcrestを使用するには、assertThat()
関数を使用します。ただし、JUnit 5にはassertThat()
関数はありません。 assertThat()
なしでHamcrestを使用するにはどうすればよいですか?
Hamcrestがクラスパスに含まれていることを確認してから、Hamcrestが提供するassertThat()
関数を使用する必要があります。現在の JUnit 5ユーザーガイド-テストアサーションの記述 から、
JUnit Jupiterのorg.junit.jupiter.Assertionsクラスは、JUnit 4のorg.junit.AssertクラスにあるようなHamcrest Matcherを受け入れるassertThat()メソッドを提供しません。代わりに、開発者は、サードパーティのアサーションライブラリによって提供されるマッチャーの組み込みサポートを使用することをお勧めします。
次の例は、JUnit JupiterテストでHamcrestのassertThat()サポートを使用する方法を示しています。 Hamcrestライブラリーがクラスパスに追加されている限り、assertThat()、is()、equalTo()などのメソッドを静的にインポートして、以下のassertWithHamcrestMatcher()メソッドのようなテストで使用できます。
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import org.junit.jupiter.api.Test;
class HamcrestAssertionDemo {
@Test
void assertWithHamcrestMatcher() {
assertThat(2 + 1, is(equalTo(3)));
}
}
当然、JUnit 4プログラミングモデルに基づくレガシーテストは、org.junit.Assert#assertThatを引き続き使用できます。」
https://github.com/junit-team/junit5/issues/147 を参照してください:
jUnit5ではHamcrestとAssertJの両方を使用できます。両方のフレームワークにはシンプルなassertThatメソッドがあり、必要に応じてインポートして使用できます。
現在、依存関係を回避するために、独自のアサーション内でこれらのフレームワークをサポートする予定はありません。それでも、それらは非常にうまく使用できます。