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