Предотвращение использования Hamcrest с JUnit 4.x - PullRequest
0 голосов
/ 31 января 2020

В настоящее время я использую JUnit 4.x с AssertJ. Я хотел бы гарантировать, что никакие использования Hamcrest не крадут это. Однако Hamcrest Core является обязательной зависимостью во время выполнения для JUnit, см. Проблема Junit # 1429: Исключение для junit4.12 по поводу org / hamcrest / SelfDescribing # 1429 , поэтому исключение зависимости из pom. xml Прямая или настройка maven-surefire-plugin classpath не будет работать.

Мне нужен способ настройки пути к классам тестового компилятора, но я не нашел такой опции в maven-compiler-plugin.

Как я могу убедиться, что в моих тестах не используются утверждения Hamcrest? Я хотел бы применить это во время сборки, используя Maven.

Ответы [ 2 ]

3 голосов
/ 31 января 2020

Исходя из того, что вы не можете исключить транзитивную зависимость Hamcrest из JUnit 4, потому что он используется самой JUnit, есть только несколько вариантов:

  • Миграция в JUnit Jupiter (он же JUnit 5 ) и полностью удалите hamcrest и запретите зависимость с помощью maven-forcecer-rule
  • Использование Arch Unit для предотвращения использования
  • Создание правила SonarQube
  • As Robert уже предлагаете правило Checkstyle ..
  • Также вы могли бы подумать о написании собственного правила принудительного применения?
  • Другой вариант может заключаться в использовании JQAssistant
1 голос
/ 31 января 2020

Maven отсутствует прицел. Он имеет test, но используется как для тестовой компиляции, так и для тестовой среды выполнения. В идеале вы бы установили область действия Hamcrest на время выполнения теста. JUnit 5 уже дал понять, что Maven отсутствует в этой области, но трудно представить новую область.

Поэтому я думаю, что лучший вариант, который у вас есть, это правило Checkstyle IllegalType или аналогичные правила предотвратить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...