Автор оригинала: Pankaj Kumar.
Модуль 5 API Jupiter предоставляет различные способы отключения или включения теста. Существуют различные аннотации, которые помогают нам легко отключать/включать тесты на основе ОС, JRE, системных свойств и т.д. Мы также можем выполнить сценарий для включения или отключения теста. Давайте рассмотрим различные аннотации JUnit для включения и отключения теста.
JUnit Отключает метод и класс тестирования
JUnit @Отключено
аннотация-это самый простой способ отключить тест. Он может быть применен как к методу тестирования, так и к самому классу. Если к классу применяется аннотация @Disabled
, то все тесты, присутствующие в классе, отключаются. Мы также можем указать сообщение о причине для целей документации.
@Test @Disabled void test() { assertTrue(3 > 0); }
@Disabled("Explicitly Disabled") class DisabledTests { //all tests disabled }
JUnit Отключает/Включает тесты на основе условий
JUnit Jupiter API предоставляет полезные аннотации в org.junit.jupiter.api.condition
пакете для включения или отключения тестов на основе указанного условия. Эти аннотации могут быть применены как к методам тестирования, так и к самому классу. Давайте рассмотрим их по очереди.
@@Отключено и @Включено
Мы можем использовать эти аннотации для отключения или включения теста в зависимости от операционной системы. Внутренне эти аннотации используют системное свойство “os.name” чтобы узнать информацию об операционной системе.
@Test @DisabledOnOs(value= {OS.MAC, OS.WINDOWS}) void test2() { assertFalse(3 < 0); } @Test @EnabledOnOs(value= {OS.MAC}) void test3() { assertTrue(System.getProperty("os.name").startsWith("Mac")); }
@@Отключено и @Включено
Мы можем использовать эти аннотации для отключения/включения тестирования на основе версии JRE. Внутренне эти аннотации используют системное свойство “java.версия” для получения информации об операционной системе.
@Test @DisabledOnJre(value= JRE.JAVA_10) void test4() { assertFalse(3 < 0); } @Test @EnabledOnJre(value= JRE.JAVA_10) void test5() { assertTrue(System.getProperty("java.version").startsWith("10")); }
@DisabledIfEnvironmentVariable и @EnabledIfEnvironmentVariable
Мы можем использовать эти аннотации со свойствами системной среды. Нам нужно указать имя системного свойства и регулярное выражение, чтобы они соответствовали им.
Эти методы используют System.getenv(строковое имя)
для получения системного свойства и сопоставления с указанным регулярным выражением.
@Test @DisabledIfEnvironmentVariable(named="USER", matches="pankaj") void test6() { assertFalse(3 < 0); } @Test @EnabledIfEnvironmentVariable(named="USER", matches="pankaj") void test7() { assertTrue("pankaj".equals(System.getenv("USER"))); }
@DisabledIfSystemProperty и @EnabledIfSystemProperty
Подобно переменным среды, эти методы используют системные свойства и указанное регулярное выражение для отключения или включения тестов.
@Test //My System Properties "os.name" value is "Mac OS X" @DisabledIfSystemProperty(named="os.name", matches="Mac.*") void test8() { assertFalse(3 < 0); } @Test //My System Properties "user.name" value is "pankaj" @EnabledIfSystemProperty(named="user.name", matches="pankaj") void test9() { assertTrue("pankaj".equals(System.getProperty("user.name"))); }
@DisabledIf и @EnabledIf
Эти аннотации используются для выполнения сценария, чтобы определить, будут ли тесты отключены или включены. Механизм сценариев по умолчанию – Oracle Nashorn ; однако атрибут механизма может использоваться для переопределения имени механизма сценариев по умолчанию.
Средство доступа обеспечивает доступ к структуре, подобной карте, с помощью простого метода String get(имя строки)
. Следующие методы доступа к свойствам автоматически доступны в сценариях.
- системная среда: Средство доступа к переменной среды операционной системы
- Свойство системы: средство доступа к системному свойству JVM
Давайте посмотрим, как мы можем использовать эти аннотации для включения и отключения тестов.
@Test @DisabledIf("'pankaj' == systemEnvironment.get('USER')") void test10() { assertFalse(3 < 0); } @Test @EnabledIf("'pankaj' == systemProperty.get('user.name')") void test11() { assertTrue("pankaj".equals(System.getProperty("user.name"))); }
JUnit Отключает Выполнение тестов
Когда вы выполните тестовый класс с отключенными методами, он создаст следующее представление.
Обратите внимание, что JUnit пропускает отключенные методы тестирования. Если вы отключите весь тестовый класс, то в отчете будут показаны все методы тестирования внутри него как пропущенные.
Резюме
JUnit Jupiter API предоставляет обширную поддержку для отключения или включения теста на основе заданных условий. Это очень полезно, когда наши тестовые примеры зависят от внешних факторов, таких как операционная система, версия Java и т.д.