【问题标题】:Is it possible to override @DisabledIfEnvironmentVariable in jUnit 5?是否可以在 jUnit 5 中覆盖 @DisabledIfEnvironmentVariable?
【发布时间】:2022-02-03 20:01:10
【问题描述】:

我有一类 jUnit 5 测试不允许在主管道中运行(出于多种原因)。为了在管道中禁用这些测试但在开发人员机器上工作,我为测试类引入了@DisabledIfEnvironmentVariable(效果很好):

@DisabledIfEnvironmentVariable(named = "USER", matches = "(.*jenkins.*|.*tomcat.*)")
@SpringBootTest(classes = {BigApplication.class}, webEnvironment = RANDOM_PORT)
class LongRunningApplicationTest { ... }

如果我想在某个场合运行测试类,如何覆盖@DisabledIfEnvironmentVariable

我尝试添加 @EnabledIfEnvironmentVariable 希望它会覆盖 @DisabledIfEnvironmentVariable 注释,因此为我提供了一种方便的方式来偶尔在管道中运行测试:

@EnabledIfEnvironmentVariable(named = "applicationTest", matches = "true")
@DisabledIfEnvironmentVariable(named = "USER", matches = "(.*jenkins.*|.*tomcat.*)")
@SpringBootTest(classes = {BigApplication.class}, webEnvironment = RANDOM_PORT)
class LongRunningApplicationTest { ... }

但是上述方法不起作用。有没有办法覆盖@DisabledIf...

【问题讨论】:

    标签: java maven junit5


    【解决方案1】:

    一种解决方案是使用以下注释引入您自己的条件: @EnabledIf@DisabledIf

    @EnabledIf("EnabledIfAnnotationUtils#shouldRun")
    class ApplicationTest {
    
        @Test
        void renameMe() {
            assertThat(false).isTrue();
        }
    }
    

    EnabledIfAnnotationUtils - 是外部类(如果您在相同条件下有多个测试),#shouldRun - 静态方法的名称。示例:

    public class EnabledIfAnnotationUtils {
    
        static boolean shouldRun() {
            boolean override = getPropertySafely("run-long-tests").equalsIgnoreCase("true");
            if(override) return true;
    
            String user = getEnvSafely("USER");
            boolean isOnJenkins = user.toLowerCase().contains("jenkins") || user.toLowerCase().contains("tomcat");
    
            return !isOnJenkins;
        }
    
        private static String getPropertySafely(String name) {
            return "" + System.getProperty(name);
        }
    
        private static String getEnvSafely(String name) {
            return "" + System.getenv(name);
        }
    }
    

    现在测试将不会在 Jenkins 上运行,除非通过覆盖参数,例如:

    mvn test -Drun-long-tests=true
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-16
      • 2017-03-11
      • 2011-01-03
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多