При обновлении до JUnit 5 (версия 5.5.2) я сделал странное открытие с функциональностью пакета: мои наборы могут находить и запускать тесты, которые заканчиваются словом "Test", но не могут найти тесты, которые не заканчиваются на " Тест »(в моем случае они заканчиваются на« База »).
В JUnit 4 мы использовали аннотацию @Suite.SuiteClasses()
для поиска этих тестов, но аннотация JUnit 5 @SelectClasses
, похоже, полностью пропускает эти тестовые классы. Даже при использовании @IncludeClassNamePatterns({"^Com.*Base.*?$"})
не удается обнаружить тесты, что мне показалось странным (тесты, которые я хочу запустить, начинаются с «Com»). После этого я попробовал аннотацию @Tag()
, которая тоже не сработала.
Я предположил, что это произошло потому, что Maven Surefire (версия 2.22.2) обнаруживает только тестовые классы, которые начинаются с Test или заканчиваются Test, Tests или TestCase. Итак, я попытался включить свой базовый тестовый пример:
<includes>
<include>**/*Base.java</include>
<include>**/Test*.java</include>
<include>**/*Test.java</include>
<include>**/*Tests.java</include>
<include>**/*TestCase.java</include>
</includes>
Когда я создавал этот проект, Maven смог запустить эти базовые тесты, но тестовые наборы по-прежнему не смогли их найти.
Мой код будет выглядеть примерно так:
@RunWith(JUnitPlatform.class)
@SelectClasses({
Com_TestOne_Base.class,
Com_TestTwo_Base.class,
Com_TestThree_Base.class,
Com_TestFour_Base.class,
Com_TestFive_Base.class,
Com_TestSix_Base.class,
})
public class Com_Base_Suite {
}
Результатом выполнения этого пакета является успешный запуск тестов, но на самом деле тесты не выполняются. Все эти тесты были обновлены до JUnit 5 и успешно выполняются самостоятельно.