2015-06-23 22 views
2

我正在使用junit 4.11和spring-test-4.1.5编写集成测试用例。我正在使用@ContextConfiguration注释来加载配置。例如,在JUnit测试用例中指定在@ContextConfiguration中加载顺序的类

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes ={ApplicationConfig.class,SpringConfiguration.class }, initializers = {CustomProfileResolver.class, AppInitializer.class}, loader = SpringApplicationContextLoader.class) 

正如你所看到的,我使用了两个配置类。 我面临的问题是我想在ApplicationConfig.class之前加载SpringConfiguration.class。我尝试了扭转顺序,但它没有奏效。这里@order都不能被指定。

那么如何命令加载这些配置类,这有可能吗?

+1

你最好的方法是定义一个配置类,例如'TestConfig.class',你可以在其中''导入'其他相关的配置,例如'@Import({ApplicationConfig.class,SpringConfiguration.class})public class TestConfig {}' – beerbajay

回答

0

@ContextConfiguration及其支持类(例如,MergedContextConfigurationAnnotationConfigContextLoaderAbstractTestContextBootstrapper等)意在通过保留的@ContextConfigurationclasses属性声明@Configuration类的原始顺序。因此,如果您可以验证证明颠倒SpringConfigurationApplicationConfig类的顺序不会导致首先处理SpringConfiguration,那么您在Spring中发现了一个错误。

如果你发现了一个错误,请在JIRA举报。

感谢,

山姆

0

使用@ContextHierarchy

@ContextHierarchy({ 
    @ContextConfiguration(classes = {SpringConfiguration.class}), 
    @ContextConfiguration(classes = {ApplicationConfig.class}) 
} 
相关问题