web-dev-qa-db-ja.com

Hamcrest-使用するバージョンは? 1.3または2

私はかなり混乱しています。現在、私は春のアプリケーションを使用してテストしています

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-test</artifactId>
   <scope>test</scope>
</dependency>

RegularExpressionsと一致させたい限り、私は幸せでした。 hamcrest 1.3では、独自のマッチャーを作成する必要がありますが、これはあまり好きではありませんでした。私が検索したところ、hamcrest 2.0には次のようなものが組み込まれています。

assertThat(DateHelper.getActualDateForXML(), MatchesPattern.matchesPattern("\\d{4}+-\\d{2}-+\\d{2}+T\\d{2}+:\\d{2}+:\\d{2}+"));

私は幸せでした、私は付け加えました:

<dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>hamcrest-junit</artifactId>
    <version>2.0.0.0</version>
    <scope>test</scope>
</dependency>

そして、spring-boot-starter-testから1.3 hamcrestの依存関係を除外しました。

<exclusions>
    <exclusion>
       <groupId>org.hamcrest</groupId>
       <artifactId>hamcrest-library</artifactId>
    </exclusion>
    <exclusion>
       <groupId>org.hamcrest</groupId>
       <artifactId>hamcrest-core</artifactId>
    </exclusion>
</exclusions>

これで、期待どおりにすべてが機能していますが、あまり快適ではありません。私は1.3について書いている人を見つけるだけで、hamcrest-junit 2.0の使用を実際に見つけることができないからです。

誰かがそれらの間の関係を私に説明できますか? hamcrest-junit 2.0にはhamcrest 1.3からすべてが組み込まれているようです...

ありがとうベン

31
ben

Hamcrest Githubに基づく

および JUnit Lambda(Junit 5)

私の感想

  • hamcrest-junit 2.0(すべき)は、junitからhamcrestを切り離すことも目標として、新たなスタートです
  • その間、Junit 5プロジェクトが開始され、サードパーティの依存関係が減少/削除されました

=>この状況では、Hamcrestの人たちがJUnit 5プロジェクトを待つ/調整してから実質的に前進することが賢明だと思います。

@heeneneeが述べたように、hamcrestの人たちは他のことで忙しくなり、この時点ではプロジェクトではあまり起こっていません。

回答する

誰かがそれらの間の関係を私に説明できますか? hamcrest-junit 2.0にはhamcrest 1.3からすべてが組み込まれているようです

  • hamcrest-junit 2.0が開始されましたが、その背後にいる人々は他のプロジェクトの直後に(そして今もそうですが)忙しいため、開発は停止しました
  • また、JUnit 5に関するいくつかの不確実性があるかもしれません。これは、JUnit 5のリリース(推測)まで、hamcrest-junit 2.0の開発を延期するインセンティブになる可能性があります。

...でも、本当に気持ちがいいんです。 1.3について書いている人を見つけるだけで、hamcrest-junit 2.0の使い方を実際に見つけることができないからです。

現時点では、あなたの場合を除いて、hamcrest-junit 2.0に移行する動機はあまりありません。 Junit 5がリリースされたら、もう一度前進するインセンティブが増えると思います。

35
Ivo Mori

Hamcrestプロジェクトには リリース2.1 があり、 パッケージ構造を作り直した の後に 徹底的な検討 があります。 アップグレード手順 に従ってください。アーティファクトJava-hamcrest 2.0.0.0は 失敗した試行 と見なされます。

6
dschulten

Ivo によるすばらしい回答です。これは実際にはより多くの票を獲得するはずですが、追加情報がいくつかあります。依存関係の情報についてMavenをチェックする場合、 Java Hamcrest 2.0.0. および Hamcrest JUnit 2.0.0. には、いくつかの sage リンクがあります。これを書いている時点では、それぞれ74と68であり、簡単なブラウジングからの大きなプロジェクトはありません。

3