1. ホーム
  2. junit

hamcrest-library Matchersとhamcrest-core CoreMatchersの相違点

2023-11-08 04:52:11

質問

ハムクレストのように見えるが org.hamcrest.Matchers クラスは org.hamcrest.CoreMatchers (のように見えますが)。 Matchers の方が多いようです)。なぜ、私は CoreMatchers を選んだのか (クラスがわずかに小さく見えるということ以外に)、そしてなぜこの 2 つのクラスはそれほど似ているのでしょうか?

どのように解決するのですか?

Hamcrestのmatcherはいくつかのモジュールに分かれています。core"には、最も基本的なマッチャーと、他のマッチャーを構築するために必要な抽象クラスが含まれています。 org.hamcrest.CoreMatchers には、これらの matcher のみのファクトリーメソッドが含まれています。その他の matcher は、マッチするオブジェクトの種類によってグループ化された "library" モジュールにあり、これらはオプションです。 org.hamcrest.Matchers には両方のマッチャーが含まれています。

どちらを使うべきですか?私は何の問題もなく後者からすべてを静的にインポートしています。もしかしたら、コンパイル時間が少し長くなるかもしれませんが、それは私にとって問題ではありません。私はJUnitのインポートに加えて、これをユニットテストの先頭に置いています。

import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.Matchers.*;

これにより、テストメソッドの可読性が最も良くなります。