60

JUnit 4 で Hamcrest を使用するには、assertThat()関数を使用します。ただし、JUnit 5 には機能がなくなりassertThat()ます。なしでハムクレストを使用するにはどうすればよいassertThat()ですか?

4

2 に答える 2

66

Hamcrest がクラスパスに含まれていることを確認してから、Hamcrest がassertThat()提供する関数を使用する必要があります。現在のJUnit 5 User Guide - Writing Tests Assertionsから、

JUnit Jupiter の org.junit.jupiter.Assertions クラスは、Hamcrest マッチャーを受け入れる JUnit 4 の org.junit.Assert クラスに見られるような 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 を使用して継続できます。」

于 2017-04-07T14:09:42.497 に答える