如何配置Spring以针对不同的环境运行集成测试?

时间:2018-07-12 10:48:56

标签: java spring

不使用Spring Boot ,如何使我的集成​​测试能够基于活动的Profile在不同的环境下运行?

我已经通过为每个概要文件使用一个应用程序配置类来实现此目的,但这意味着我必须在每个不同的应用程序配置类之间复制所有Bean定义。这似乎容易出错且麻烦。例如,在我所有的集成测试类上,我都有以下注释:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes= 
    {EnvironmentConfiguration1.class,EnvironmentConfiguration2.class})

public class IntegrationTestClassIT {

    @Test
    public void testMethod() {...}
}

然后,我的每个EnvironmentConfigurationX.class都引用不同的PropertySource,例如:

@Profile("environment1")
@Configuration
@ComponentScan
@PropertySource("classpath:environment1.properties")

public class EnvironmentConfiguration1 {

    @Bean
    public static PropertySourcesPlaceholderConfigurer 
    propertySourcesPlaceholderConfigurer() {
    return new PropertySourcesPlaceholderConfigurer();
    }

}

这似乎可行,但是拥有所有这些Configuration类感觉很丑。 Spring对此没有更好的解决方案吗?

此外,即使我期望能够在我的测试EnvironmentConfigurationxxx类上使用@TestPropertySource,也无法正常工作。我以为PropertySource和TestPropertySource是可互换的,只是TestPropertySource具有更高的优先级。 TestPropertySource不是Configuration类的有效注释吗?

0 个答案:

没有答案