2013-06-20 127 views
3

在我的測試類(CUT) - ejb中 - 我有一個私有方法「getConnection」。 我想測試CUT的另一種方法,但是這種方法將會失敗。在JMockit中模擬被測試的類的私有方法

我試過了,如下所示,但「調用」是錯誤的。我不想調用這個方法,我想把它存根。但是如何? (「連接」是一個stub)

new NonStrictExpectations() { 
    { 
    invoke(archivingBean, "getConnection");result = connection; 
    } 
}; 
archivingBean.moveCreditBasic2Archive(new Date()); 

回答

7

您的測試是正確的,但它缺少對嘲笑型的聲明。在這種情況下,EJB類。

通常情況下,模擬類型會被完全模擬(所有方法)。例如,在這種情況下,您會爲測試方法聲明@Mocked MyEJB archivingBean參數。

對於部分嘲諷,在另一方面,你用NonStrictExpectations(Object...)構造,像這樣:

new NonStrictExpectations(archivingBean) {{ // <== note the argument here 
    invoke(archivingBean, "getConnection"); result = connection; 
}}; 
+0

似乎是最新版本jmockit的沒有一個「調用」方法 – yuyue007

+1

這些方法是靜態的從'mockit.Deencapsulation'類中導入。 –

相關問題