【发布时间】:2021-10-21 15:41:47
【问题描述】:
我的 Springboot REST API 应用程序使用 JUnit 5 的 RESTAssured 集成测试。我希望能够隔离这些 RESTAssured 测试,以便它们仅针对内存中的 H2 数据库运行,为此,我使用如下配置文件:
- application.profile(将活动配置文件设置为“开发”或“生产”)
- application-dev.profile(使用内存 H2 数据库进行测试的开发配置文件)
- application-prod.profile(使用真实数据库的生产配置文件)
我正在尝试隔离我的 RestAssured 测试,以便当我运行 maven > install 时,它们只会在我使用“dev”配置文件时运行。
如果我使用“生产”配置文件,我不想运行它们,因为我不希望 RestAssured 测试针对真实数据库触发。
我的 RestAssured 测试类用 @ActiveProfiles("dev") 注释为:
@ActiveProfiles("dev")
class MyControllerRestAssuredTest { ... }
我希望当我的 application.profile 设置活动配置文件时:
-
spring.profiles.active=dev,maven > 安装将运行MyControlerRestAssuredTest -
spring.profiles.active=prod, maven > install 将 不 运行MyControlerRestAssuredTest
但是,无论我如何设置我的活动配置文件,maven > install 都会运行MyControlerRestAssuredTest 测试。
我错过了什么?
【问题讨论】:
-
@ActiveProfiles设置处于活动状态的配置文件。当您使用 JUnit 5 时,您可能希望改用@DisableIf(@IfProfileValue仅支持 JUnit 4)。 -
您好,谢谢。我用
@DisabledIf(expression = "#{environment['spring.profiles.active'] == 'prod'}")注释了我的测试,并在我的src/test/java/application-test.properties 中设置了spring.profiles.active=prod,但是当我发出maven > install 时测试仍然运行 -
尝试在您的
application.properties中设置spring.profiles.active = dev。另请查看this maven 和 Spring 引导配置文件集成的答案。
标签: spring-boot rest-assured spring-profiles