🪲 JUnit 4 и JUnit 5 – как избежать ошибок?



Довольно распространённой ошибкой при тестировании приложений на 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, и это абсолютно нормально.



✍️ Хорошая статья про миграцию с JUnit 4 на JUnit 5 в блоге Oracle (en): https://blogs.oracle.com/javamagazine/post/migrating-from-junit-4-to-junit-5-important-differences-and-benefits