在集成测试中使用Spring @ActiveProfile

时间:2013-08-26 22:20:08

标签: spring spring-annotations spring-test spring-profiles

我正在使用@Profile Spring注释在嵌入式,独立式和容器管理数据源之间进行选择。为了选择“嵌入式”,我的集成测试被注释为激活适当的配置文件:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=AnnotationConfigContextLoader.class, classes={TestConfigWrapper.class})
@ActiveProfiles({"EMBEDDED_DB"})
public class SomeIntegrationTest {

问题在于我想将'@ActiveProfiles'移到TestConfigWrapper中,但这样做并没有被提起,应用程序上下文也不会加载任何DataSource。

这意味着我必须使用@ActiveProfile注释每个集成测试,这实际上意味着它成为集成测试样板并且很容易妨碍未来的重构。

有没有办法可以使用java配置执行此操作?

1 个答案:

答案 0 :(得分:4)

来自Hippooom的评论使用抽象类来配置测试:

@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={WebAppInitializer.class})
@ActiveProfiles({Profiles.EMBEDDED_DB})
public abstract class ProfiledIntegrationTest {

}