![](/img/trans.png)
[英]Spring: Why method annotated with @PostConstruct cannot be static?
[英]Call @PostConstruct annotated method explicitly
我正在為我的Java類之一編寫junit測試。 我有一個@PostConstruct注釋方法,如下所示,我要為其編寫單元測試:
@PostConstruct
public void initialize() {
try {
logger.info("Bootstrapping Safenet Initialization");
String hello = cryptographicController.encrypt("Hello");
logger.info("Bootstrapping Safenet " + hello);
} catch (Throwable ex) {
logger.error("Error initializing Crypto", ex);
throw new DataConverterException();
}
}
我想編寫單元測試來測試DataConverterException 。 但是我不確定是否可以從單元測試中顯式調用initialize方法。
我怎樣才能做到這一點?
情況1:
如果在xml中創建了Java類的bean並加載了上下文配置,則將自動調用bean生命周期方法。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "XX")
情況2:
在要測試的單元測試用例中,應顯式調用Bean生命周期方法@PostConstruct
和@PreDestroy
。
如果測試類的對象如下創建
JavaClass javaClass = new JavaClass();
然后是的,因為未創建Bean,所以我們需要調用initialize
方法顯式。
兩種情況都可以讓您測試所需的區域,
模擬cryptographicController
應該給您所需的選項
@Test(expected=DataConverterException.class)
public void test() {
doThrow(new RuntimeException()).when(cryptographicController).encrypt("Hello");
javaClass.initialize();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.