Hamcrest - какую версию использовать? 1,3 или 2

Я очень смущен. В настоящее время я тестирую приложение spring, используя

<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>

И выгнал 1,3 зависимостей от hampcrest от spring -boot-starter-test:

<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...

Спасибо Бен

Ответы

Ответ 1

По мотивам Хамкрест Гитхуб

и Юнит Лямбда (5 июня)

Мой взгляд на это

  • Hamcrest-Junit 2.0 (должно быть) - это новый старт, а также цель отделить Hamcrest от Junit
  • тем временем запущен проект Junit 5, который уменьшает/удаляет сторонние зависимости

=> В этой ситуации, я ожидаю, что ребятам из подколенного сухожилия будет разумно подождать/скоординировать с проектом JUnit 5, прежде чем двигаться дальше.

Как упомянул @heenenee, ребята из Hamcrest стали заняты другими делами, и на данный момент с проектом мало что происходит.

Отвечать

Может кто-нибудь объяснить мне связь между ними? Потому что кажется, что в Hamcrest-Junit 2.0 все встроено из Hamcrest 1.3

  • Hamcrest-junit 2.0 был запущен, но ребята, стоящие за ним, вскоре занялись (и продолжают заниматься) другими проектами, поэтому разработка остановилась
  • могут также быть некоторые неопределенности относительно JUnit 5, что может быть стимулом отложить дальнейшую разработку Hamcrest-junit 2.0 до выпуска JUnit 5 (предположение)

... но я не чувствую себя действительно комфортно. Потому что я могу просто найти людей, пишущих о 1.3, и не могу найти применение hamcrest-junit 2.0.

На данный момент, кроме вашего случая, нет особого стимула для перехода на Hamcrest-Junit 2.0. После выхода Junit 5 я ожидаю, что будет больше стимулов для дальнейшего продвижения вперед.

Ответ 2

Отличный ответ Ivo, который действительно должен получать больше голосов, но здесь есть дополнительная информация. Если вы проверите Maven для получения информации о зависимостях, Java Hamcrest 2.0.0.0 и Hamcrest JUnit 2.0.0.0, есть ссылки usage. В то время я пишу это, это 74 и 68 соответственно, и никаких крупных проектов из краткого обзора.