Автор оригинала: mkyong.
В этой статье показано, как использовать JUnit 5 для включения или отключения тестов в зависимости от условий.
P.S Протестировано с JUnit 5.5.2
1. Операционная система
1.1 Включение или отключение тестов на основе конкретной операционной системы через @enabledonos
и @Отключено
аннотации.
package com.mkyong.conditional; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledOnOs; import org.junit.jupiter.api.condition.EnabledOnOs; import org.junit.jupiter.api.condition.OS; public class OperatingSystemTest { @Test @EnabledOnOs({OS.LINUX, OS.WINDOWS}) void onLinuxOrWindows() { System.out.println("Run this on Linux or Windows!"); } @Test @EnabledOnOs({OS.WINDOWS}) void onWindows() { System.out.println("Run this on Windows!"); } @Test @DisabledOnOs(OS.WINDOWS) void notOnWindows() { System.out.println("Do not run this on Windows!"); } @Test @DisabledOnOs({OS.WINDOWS, OS.AIX, OS.SOLARIS, OS.MAC}) void notOnWindowsOrAixOrSolarisOrMac() { System.out.println("Do not run this on Windows, AIX, Solaris or MAC!"); } }
Вывод – Тест с ОС Windows.
2. Среда выполнения Java
2.1 Включение или отключение тестов на основе конкретной среды выполнения Java (JRE) с помощью @enabledonjre
и @оТключено
аннотации.
package com.mkyong.conditional; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledOnJre; import org.junit.jupiter.api.condition.EnabledOnJre; import org.junit.jupiter.api.condition.JRE; public class JreTest { @Test @EnabledOnJre(JRE.JAVA_9) void onJava9() { System.out.println("Run this on Java 9"); } @Test @EnabledOnJre({JRE.JAVA_12, JRE.JAVA_13}) void onJava12OrJava13() { System.out.println("Run this on Java 12 or Java 13"); } @Test @DisabledOnJre(JRE.JAVA_9) void notOnJava9() { System.out.println("Do not run this on Java 9"); } }
Вывод – Тест с Java 13
3. Системное свойство
3.1 Включенные или отключенные тесты на основе значения имени
из системного свойства JVM через @enabledifsystemproperty
и @disabledifsystemproperty
аннотации.
package com.mkyong.conditional; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledIfSystemProperty; import org.junit.jupiter.api.condition.EnabledIfSystemProperty; import java.util.Properties; public class SystemPropertyTest { @Test @EnabledIfSystemProperty(named = "java.vm.name", matches = ".*OpenJDK.*") void onOpenJDK() { System.out.println("Run this on OpenJDK!"); } @Test @DisabledIfSystemProperty(named = "user.country", matches = "MY") void notOnCountryMalaysia() { System.out.println("Do not run this on country code MY"); } @Test void printSystemProperties() { Properties properties = System.getProperties(); properties.forEach((k, v) -> System.out.println(k + ":" + v)); } }
Прочтите это – Как распечатать все системные свойства на Java
4. Переменная среды
4.1 Включенные или отключенные тесты на основе значения имени
из свойства среды через @enabledifenvironmentvariable
и @disabledifenvironmentпеременные
аннотации.
package com.mkyong.conditional; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledIfEnvironmentVariable; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import java.util.Map; public class EnvVariableTest { @Test @EnabledIfEnvironmentVariable(named = "PROCESSOR_IDENTIFIER", matches = ".*Intel64 Family 6.*") void onIntel64() { System.out.println("Run this on Intel6 Family 6 only."); } @Test @EnabledIfEnvironmentVariable(named = "NUMBER_OF_PROCESSORS", matches = "8") void onProcessor8() { System.out.println("Run this if it has 8 processors."); } @Test @DisabledIfEnvironmentVariable(named = "CURRENT_ENV", matches = ".*development.*") void notOnDeveloperPC() { System.out.println("Do not run this if env variables 'CURRENT_ENV' matches .*development.* "); } @Test void printEnvironmentProperties() { Mapenv = System.getenv(); env.forEach((k, v) -> System.out.println(k + ":" + v)); } }
Скачать Исходный Код
- Выполнение условного теста JUnit 5
- Ява – Как отобразить все системные свойства
- Ява – Как отобразить все переменные среды
Оригинал: “https://mkyong.com/junit5/junit-5-conditional-test-examples/”