Перейти к основному содержимому

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

· 2 мин. чтения

1. Введение

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

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

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

@SpringJUnitConfig(Spring5EnabledAnnotationIntegrationTest.Config.class)
public class Spring5EnabledAnnotationIntegrationTest {

@Configuration
static class Config {}
}

2. @EnabledIf

Давайте добавим в наш класс этот простой тест с текстовым литералом «true» :

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

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

Однако, если мы заменим предоставленную строку на «false» , она не будет выполнена:

./247edf17d10051b3b105730eef820247.jpg

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

3. @EnabledIf с заполнителем свойства

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

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

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

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

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

Наконец, мы можем использовать аннотацию с выражениями Spring Expression Language (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 с использованием SpringExtension .

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