是否可以标记 Springboot 测试,以便它们仅在某些配置文件处于活动状态时运行

2022-09-02 12:50:28

我有两个配置文件:dev和default。当活动配置文件为默认值时,我想跳过一些(不是全部)测试。是否有可能以某种方式标记这些测试以执行此操作?或者如何实现这一点?我使用弹簧靴。这是我的父级测试类:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = MyServiceStarter.class, webEnvironment= SpringBootTest.WebEnvironment.DEFINED_PORT,
        properties = {"flyway.locations=filesystem:../database/h2", "server.port=9100", "spring.profiles.default=dev"})
@Category(IntegrationTest.class)
public abstract class AbstractModuleIntegrationTest { ... }

答案 1

我的同事找到了一个解决方案:所以如果你需要注释单独的测试,你可以使用注释:@IfProfileValue

@IfProfileValue(name ="spring.profiles.active", value ="default")
    @Test
    public void testSomething() {
        //testing logic
    }

仅当默认配置文件处于活动状态时,此测试才会运行

更新:对于 Junit 5 使用:

@EnabledIfSystemProperty(named = "spring.profiles.active", matches = "default")

更多信息: https://docs.spring.io/spring-framework/docs/current/reference/html/testing.html#integration-testing-annotations-meta


答案 2

是的,你可以做到。

例如使用:@ActiveProfiles

@ActiveProfiles("default")
@RunWith(SpringRunner.class)
@SpringBootTest
public class YourTest {
   //tests
}