将多个Spring配置文件应用于单个Configuration类

时间:2015-09-28 22:22:58

标签: java spring testing integration-testing spring-profiles

我的应用程序有4个可能的Spring配置文件

  • TEST(这是用于单元/集成测试)
  • QA
  • STAGE
  • PRODUCTION

上面列表中的最后3个是运行此应用程序的行为环境。

这是我的配置类AppConfig

的概述
@Configuration
@ComponentScan(basePackages={"org.mycompany.services","org.mycompany.domain", "org.mycompany.utils"})
public class AppContext {

}

这是我的问题: 我希望AppContext的配置仅适用于QA,STAGE和PRODUCTION配置文件(但不适用于TEST配置文件)。最好的方法是什么?

原因是上面的配置类扫描&从org.mycompany.services中选择类。但是我不希望这个包被用于TEST配置文件,因为我打算使用Mockito来模拟这个包中的类。

另一个可能的问题是,我是否需要重新思考我接近单元/集成测试的方式,以便我可以简化org.mycompany.service包中类的模拟?

1 个答案:

答案 0 :(得分:4)

您可以在配置类上使用@Profile注释。

要为TEST以外的任何个人资料启用课程,只需使用@Profile("!TEST")

或者您可以明确指定配置文件:@Profile({ "QA", "STAGE", "PRODUCTION" })