Автор оригинала: 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 .