首页 > 解决方案 > 仅在设置了特定的弹簧配置文件时才运行集成测试

问题描述

我们的 Spring Boot 应用程序中有多个测试类。一些类包含集成测试,一些包含单元测试。这意味着如果我(例如使用 maven)让所有测试都被执行,它将运行所有类中的所有测试。

我想要实现的是,如果设置了特定的弹簧配置文件,例如通过 application.yml,则只执行集成测试。例如,我喜欢注释整个测试类以定义只有在设置了指定的弹簧配置文件时才执行此类中的测试。如果未设置,则应忽略这些测试。

那么可以做些什么来实现这一目标呢?请注意,关于堆栈溢出的测试和弹簧配置文件有很多问题。但是他们中的大多数都指出了如何在特定于弹簧配置文件的测试中设置配置。那不是我要找的。我想执行或忽略测试。

标签: springspring-bootspring-profilesintegration-testing

解决方案


我不确切知道你想如何实现它,但如果你使用 junit 在运行时有条件地忽略一些测试,只需使用配置属性,这是一种方法:

应用程序属性:

test.enabled=true

然后在您的测试代码中,您可以使用org.junit.Assume如下属性:

@Value("${test.enabled}")
private Boolean testEnabled;

@Test
public void test {
    org.junit.Assume.assumeTrue(testEnabled);
    // your test code
}

现在,如果您将该属性设置test.enabled为 true,则测试将运行,否则将被忽略。

资料来源:有条件地忽略 JUnit 4 中的测试


推荐阅读