Предотвращение использования библиотек junit4 в проекте - PullRequest
1 голос
/ 06 мая 2020

Существует существующий программный проект, разработанный и поддерживаемый несколькими разработчиками. IDE - это IntelliJ, инструмент сборки - maven. В проекте были тесты junit4 и junit5. Мы хотим провести рефакторинг и использовать только junit5. .junit.jupiter.api.Assertions.assertTrue.

Есть ли элегантный, автоматический способ обнаружить использование классов junit4 как можно раньше?

1 Ответ

1 голос
/ 07 июля 2020

После преобразования всех тестов из JUnit 4 в JUnit 5 у вас есть несколько вариантов.

Самый простой вариант - исключить JUnit 4 из пути к классам. В зависимости от того, какие библиотеки вы используете, вам может потребоваться добавить некоторые исключения на уровне зависимости, чтобы избежать транзитивного извлечения JUnit 4. Эта настройка приведет к сбою сборки на этапе компиляции, если используется какой-либо импорт JUnit 4.

Проект, в котором я работаю, не имеет этой опции, поскольку он использует библиотеку Testcontainers , которая по-прежнему требует, чтобы JUnit 4 был в пути к классам, даже если ваши тесты написаны в JUnit 5 ( testcontainers-java # 970 ). В нашем случае мы добавили правило Checkstyle , чтобы запретить импорт JUnit, не относящегося к Jupiter, и у нас происходит сбой сборки при сбое Checkstyle.

Соответствующая конфигурация Checkstyle:

<module name="IllegalImport">
    <property name="regexp" value="true"/>
    <property name="illegalClasses" value="^org\.junit\.(?!jupiter\.).+"/> <!-- Reject any org.junit import that's not also org.junit.jupiter -->
</module>
...