忽略在春季启动时本地执行的测试

时间:2018-04-12 12:20:56

标签: unit-testing spring-boot

我需要在本地环境中禁用一个单元测试的执行。我们使用local-test个人资料

在本地运行单元测试
-Dspring.profiles.active=local-test

我需要在所有个人资料中执行我的测试 local-test我怎样才能实现此目标?

这是我的测试,如果我放value = "!local-test"它不起作用

@IfProfileValue(name = "spring.profiles.active", value = "local-test")
@RunWith(SpringRunner.class)
public class EnvironmentTests {

    @Test
    public void TestNightTimeFormatCorrect() {
        throw new RuntimeException("test exception");
    }
}

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,希望它对某些人有用。

在这种情况下,每次没有TestNightTimeFormatCorrect个人资料时,都会执行local-test。当没有设置配置文件时,它也将被执行。

@RunWith(SpringJUnit4ClassRunner.class)  
@ProfileValueSourceConfiguration(EnvironmentTests.ProfileProfileValueSource.class)
@IfProfileValue(name = "local-test", value = "false")
public class EnvironmentTests {

    @Test
    public void TestNightTimeFormatCorrect() {
        throw new RuntimeException("test exception");
    }


    public static class ProfileProfileValueSource implements ProfileValueSource
    {
        @Override
        public String get(String string)
        {
            final String systemProfiles = System.getProperty("spring.profiles.active", System.getProperty("SPRING_PROFILES_ACTIVE", ""));
            final String[] profiles = systemProfiles.split(",");
            return Arrays.asList(profiles).contains(string) ? "true" : "false";
        }

    }
}