Spring 5 Тестирование с аннотацией @EnabledIf
1. Вступление
В этой быстрой статье мы познакомимся с аннотациями@EnabledIf и@DisabledIf в Spring 5 с использованием JUnit 5.
Проще говоря,those annotations make it possible to disable/enable particular test if a specified condition is met.
Мы воспользуемся простым тестовым классом, чтобы показать, как работают эти аннотации:
@SpringJUnitConfig(Spring5EnabledAnnotationIntegrationTest.Config.class)
public class Spring5EnabledAnnotationIntegrationTest {
@Configuration
static class Config {}
}
2. @EnabledIfс
Давайте добавим в наш класс этот простой тест с текстовым литералом“true”:
@EnabledIf("true")
@Test
void givenEnabledIfLiteral_WhenTrue_ThenTestExecuted() {
assertTrue(true);
}
Если мы запустим этот тест, он выполняется нормально.
Однако, если мы заменим предоставленныйString на“false”, он не будет выполнен:
Помните, что если вы хотите статически отключить тест, для этого есть специальная аннотация@Disabled.
3. @EnabledIf с заполнителем свойства
Более практичный способ использования@EnabledIf - использовать заполнитель свойства:
@Test
@EnabledIf(
expression = "${tests.enabled}",
loadContext = true)
void givenEnabledIfExpression_WhenTrue_ThenTestExecuted() {
// ...
}
Прежде всего, нам нужно убедиться, что параметрloadContext установлен наtrue, чтобы загружался контекст Spring.
По умолчанию для этого параметра установлено значениеfalse, чтобы избежать ненужной загрузки контекста.
4. @EnabledIf с выражением SpEL
Наконец,we can use the annotation with Spring Expression Language (SpEL) expressions.
Например, мы можем включить тесты только при запуске JDK 1.8
@Test
@EnabledIf("#{systemProperties['java.version'].startsWith('1.8')}")
void givenEnabledIfSpel_WhenTrue_ThenTestExecuted() {
assertTrue(true);
}
5. @DisabledIfс
Эта аннотация противоположна@EnabledIf.
Например, мы можем отключить тест при запуске на Java 1.7:
@Test
@DisabledIf("#{systemProperties['java.version'].startsWith('1.7')}")
void givenDisabledIf_WhenTrue_ThenTestNotExecuted() {
assertTrue(true);
}
6. Заключение
В этой краткой статье мы рассмотрели несколько примеров использования аннотаций@EnabledIf и@DisabledIf в тестах JUnit 5 с использованиемSpringExtension.
Полный исходный код примеров доступенover on GitHub.