我有我的抽象測試類的代碼段(我知道XmlBeanFactory
與ClassPathResource
已棄用,但它不太可能是問題的情況)。Spring測試@ContextConfiguration和靜態上下文
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public abstract class AbstractIntegrationTest {
/** Spring context. */
protected static final BeanFactory context = new XmlBeanFactory(new ClassPathResource(
"com/.../AbstractIntegrationTest-context.xml"));
...
}
它加載默認的測試配置XML文件AbstractIntegrationTest-context.xml
(然後我用自動裝配)。我還需要在用@BeforeClass
和@AfterClass
註釋的靜態方法中使用Spring,所以我有一個單獨的上下文變量指向相同的位置。但問題是這是一個單獨的上下文,它將有不同的bean實例。那麼我怎樣才能合併這些上下文,或者我如何從靜態上下文中調用由@ContextConfiguration
定義的Spring初始化bean?
我想通過擺脫這些靜態成員的可能的解決方案,但我很好奇,如果我可以做到與代碼相對較小的更改。
關於第二選擇。在所有測試之前運行一次並不是一個大問題。事情是,如何做課後*邏輯? – Vic
@Vic:查看我的更新 –
第一個解決方案仍然存在問題:「從* where *獲取應用程序上下文注入?」第二個必須工作。我會嘗試。 – Vic