簡體   English   中英

顯式調用@PostConstruct帶注釋的方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM