
Довольно распространённой ошибкой при тестировании приложений на Java, приводящей к неожиданным результатам тестов, является совместное использование JUnit 4 и JUnit 5 в одном и том же тестовом классе.
Не смотря на то, что первая версия JUnit 5 вышла в 2017 году, до сих пор существуют проекты, которые используют его предшественника — и это вполне нормально.
JUnit 5 поддерживает запуск тестов JUnit 4 вместе с тестами JUnit 5 благодаря JUnit Vintage Engine. Благодаря этой фиче мы можем постепенно мигрировать с JUnit 4 на JUnit 5.
Именно JUnit Vintage Engine делает возможным выполнение тестов, написанных на JUnit 4, в среде JUnit 5. Однако использование аннотаций и API JUnit 4 и JUnit 5 (точнее, JUnit Jupiter) одновременно в одном тестовом классе не работает. Нам нужно выбирать что-то одно.
Мы можем использовать как тесты JUnit 4, так и тесты JUnit 5 в одном проекте, но каждый отдельный тестовый класс должен использовать либо JUnit 4, либо JUnit 5.
Например, тест
MyOrderTest
может быть написан на JUnit 4, а MyPricingServiceTest
— на JUnit 5, и это абсолютно нормально.