Spring 5 Тестирование с аннотацией @EnabledIf

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”, он не будет выполнен:

image

Помните, что если вы хотите статически отключить тест, для этого есть специальная аннотация@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.