Рубрики
Без рубрики

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

Узнайте, как использовать @EnabledIf и @DisabledIf в тестах JUnit 5 с помощью SpringExtension.

Автор оригинала: Marcos Lopez Gonzalez.

1. Введение

В этой быстрой статье мы обнаружим @EnabledIf и @DisabledIf аннотации весной 5 с использованием JUnit 5.

Проще говоря, эти аннотации позволяют отключить/включить определенный тест, если заданное условие выполнено.

Мы будем использовать простой тестовый класс, чтобы показать, как работают эти аннотации:

@SpringJUnitConfig(Spring5EnabledAnnotationIntegrationTest.Config.class)
public class Spring5EnabledAnnotationIntegrationTest {
 
    @Configuration
    static class Config {}
}

2. @EnabledIf

Давайте добавим в наш класс этот простой тест с текстом буквального “истинный” :

@EnabledIf("true")
@Test
void givenEnabledIfLiteral_WhenTrue_ThenTestExecuted() {
    assertTrue(true);
}

Если мы за выполняем этот тест, он выполняется нормально.

Однако, если мы заменим струна ивовый прут “ложный” он не выполняется:

Имейте в виду, что если вы хотите статично отключить тест, есть специальная @Disabled аннотация для этого.

3. @EnabledIf с собственностью Placeholder

Более практичный способ использования @EnabledIf с помощью заполнителя свойства:

@Test
@EnabledIf(
  expression = "${tests.enabled}", 
  loadContext = true)
void givenEnabledIfExpression_WhenTrue_ThenTestExecuted() {
    // ...
}

Прежде всего, мы должны убедиться, что нагрузкаКонтекст параметр установлен для истинное так что весенний контекст загружается.

По умолчанию этот параметр устанавливается для ложные чтобы избежать ненужной загрузки контекста.

4. @EnabledIf с выражением SpEL

Наконец, мы можем использовать аннотацию с выражениями языка весеннего выражения (SpEL).

Например, мы можем включить тесты только при запуске 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 с использованием ВеснаЭкстензия .

Полный исходный код для примеров доступен более на GitHub .