Модульное тестирование – это вид тестирования программного обеспечения, при котором мы тестируем отдельные компоненты программного обеспечения. Это делается во время разработки приложения разработчиками. Он изолирует раздел кода и проверяет его правильность. Единицей может быть отдельная функция, метод, процедура, модуль или объект.
Ну вот несколько преимуществ модульного тестирования.
- Если модульные тесты хорошо написаны, то с каждой сборкой нашего программного обеспечения с измененным кодом мы можем заметить любые сбои при внедрении новых функций.
- Это делает ваш код более многоразовым, так как для хороших модульных тестов компоненты кода должны быть модульными.
- Он действует как документация, поскольку описывает ожидаемое поведение части кода для других разработчиков.
Теперь, когда мы определили модульное тестирование и почему мы его используем, мы готовы перейти к JUnit 5.
JUnit – одна из самых популярных платформ модульного тестирования на Java. JUnit 5 состоит из нескольких различных модулей из трех различных подпроектов, а именно платформы JUnit, JUnit Vintage, JUnit Jupiter.
Установить JUnit 5
Для Maven добавьте зависимость в Pom.xml:
org.junit.jupiter junit-jupiter-api {$version} test
Для Gradle добавьте в build.gradle:
testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '$version'
Аннотации JUnit
Аннотации – это мета-теги, которые предоставляют дополнительную информацию о методах и классах, определенных в нашей структуре кода.
Здесь перечислены некоторые часто используемые аннотации.
@Test– Представляет метод тестирования.@beforeEach– Представляет аннотированный метод, который должен выполняться перед каждым методом тестирования.@afterEach– Представляет аннотированный метод, который должен выполняться после каждого метода тестирования.@beforeAll– Представляет аннотированный метод, который должен выполняться перед всеми методами тестирования.@AFTERALL– Представляет аннотированный метод, который должен быть выполнен после всех методов тестирования.@DisplayName– Создает пользовательское отображаемое имя для тестового класса или метода.@Tag– Создает теги для фильтрации тестов.@Extendwith– Регистрирует пользовательские расширения.
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
class JUnit5Tests {
@BeforeAll
static void beforeAllTest() {
log.info("Executed before all test methods.");
}
@BeforeEach
void beforeEachTest() {
log.info("Executed before each test method.");
}
@Test
void test() {
log.info("Executed test method.");
}
@AfterEach
void afterEachTest() {
log.info("Executed after all test methods");
}
@AfterAll
static void afterAllTest() {
log.info("Executed after all test methods");
}
}
Утверждения JUnit
Каждый метод тестирования должен быть оценен на соответствие условию true с использованием утверждений, чтобы тест мог продолжать выполняться. Утверждения JUnit Jupiter хранятся в org.junit.jupiter.api. Утверждения класс.
Здесь вот некоторые часто используемые утверждения.
assertNull(фактическое значение)– Сбой, если фактическое значение не равно нулю.assertNotNull(фактическое значение)– Сбой, когда фактическое значение равно нулю.assertEquals(ожидаемое значение, фактическое значение)– Сбой, когда ожидаемое значение не равно фактическому значению.assert All()– Группирует кучу утверждений, и каждое утверждение выполняется, даже если одно или несколько из них завершается неудачей.assertTrue(значение выражения)– Завершается ошибкой, если выражение неверно.assertFalse(значение выражения)– Сбой, если выражение не является ложным.
import static org.junit.jupiter.api.Assertions.assertAll;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;
import example.io.util.Customer;
class JUnit5Tests {
private final Customer customer = new Customer("Ann", "Marie");
@Test
void standardAssertions() {
assertEquals("Marie", customer.getLastName());
assertNotNull(customer);
assertTrue("Ann", customer.getFirstName());
}
@Test
void groupedAssertions() {
assertAll("customer",
() -> assertEquals("Ann", customer.getFirstName()),
() -> assertEquals("Marie", customer.getLastName())
);
}
}
Предположения JUnit5
Предположения – это статические методы, присутствующие внутри org.junit.jupiter.api. Предположения класс. Эти методы будут выполнять тест только при выполнении указанного условия, в противном случае тест будет прерван. Прерванный тест не приведет к сбою сборки. Предположения также понимают лямбда-выражения.
Здесь вот некоторые часто используемые предположения.
предположим, что True()– Выполнить тело, когда будет пропущен положительный тест удержания условия.предположим, что False()– Выполнить тело, когда будет пропущен тест с отрицательным условием удержания, иначе.предполагая, что()– Часть метода тестирования будет выполняться, если предположение верно, и все последующее будет выполняться независимо от предположения в предположении, что() выполняется.
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assumptions.assumeTrue;
import static org.junit.jupiter.api.Assumptions.assumingThat;
import example.util.Calculator;
import org.junit.jupiter.api.Test;
class JUnit5Tests {
private final Calculator calculator = new Calculator();
@Test
void simpleAssumeTest() {
assumeTrue("DEV".equals(System.getenv("ENV")),
() -> "Aborting test");
}
@Test
void complexAssumeTest() {
assumingThat("CI".equals(System.getenv("ENV")),
() -> {
assertEquals(21, calculator.add(14, 7));
});
}
}
Дальнейшее Чтение
- Чтобы получить больше информации и более глубокое понимание, обратитесь к Руководству пользователя JUnit 5 .
- Пример начального проекта для Maven, ознакомьтесь с проектом unit 5-jupiter-starter-maven .
- Руководство по базовому пониманию из Учебников JUnit 5 .
Мы рассмотрели JUnit 5 и некоторые его функции с некоторыми примерами. Мы также рассмотрели, как мы можем использовать аннотации, утверждения, предположения JUnit.
Спасибо за чтение. Счастливого Обучения. ❤ ️
Оригинал: “https://dev.to/anisha/unit-testing-with-junit5-3mhb”