Тестирование ПО - это процесс испытания программы, целью которого является определить соответствие между ожидаемым (expected) и актуальным (actual) поведениями с помощью набора тестов.
Регрессионное тестирование - проверка работоспособности старого функционала.
приемочное тестирование (Acceptance testing).
End To End, E2E, Functional testing
Но можно встретить варианты, где 3 уровня.
В этой модели объединяют интеграционный и системный уровни.
Unit testing - тестирование базового (маленького) компонента приложения.
Делается для того что бы проверить что тестируемый unit работает правильно в изоляции от других компонентов
Integration testing - тестирование нескольких компонентов приложения.
Делается для того что бы проверить что тестируемые unit'ы работают вместе правильно (как один большой unit).
Acceptance testing - тестирование всего приложения в целом.
Т.е. как оно работает со стороны пользователя (Функциональное тестирование)
JUnit 5 разбит на несколько основных под-проектов:
JUnit Platform
Для возможности запуска на JVM, интеграция с билд-инструментами и т.п.
JUnit Jupiter
Набор классов для написания тестов.
JUnit Vintage
Для интеграции с предыдущими версиями.
Для работы JUnit5 необходима версия Java8 или выше
По умолчанию тесты создаются в папке src/test/<...>
Структура далее обычно совпадает структурой кода.
Но как всегда все можно перенастроить.
Имя файла должно заканчиваться на Test.
В Unit 5 классы тестов и сами тесты могут не быть public как раньше.
Методы тестов аннотируются @Test
Но не только ей, есть еще другие аннотации.
В наименовании метода теста допускается написание camel-case и snake-case
Для проверки ожидаемого и актуального значений используются методы из класса org.junit.jupiter.api.Assertion.
Для расширения функциональности ассертов можно использовать библиотеки AssertJ, Hamcrest и д.р.
Порядок выполнения тестов не гарантирован.
Порядок выполнения тестов не гарантирован!!!
По умолчанию для выполнения каждого теста создается свой экземпляра класса теста, что бы обезопасить работу с данными.
Это поведение определяет аннотация:
Что бы изменить это поведение нужно использовать другой параметр
При использовании PER_METHOD создается один инстанс класса с тестами.
Важное замечание:
Если используется PER_METHOD, то методы помеченные аннотациями