2015-06-23 38 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}) 
} 
相關問題