我是Mockito的新手,並試圖找出是否有方法使用Mockito的WhiteBox功能在公共方法內設置成員變量的值。使用Mockito WhiteBox在方法範圍內設置成員變量
我試過尋找這個,但似乎沒有參考文獻談論這個。
它是否可行?
謝謝
添加了一個我想要實現的例子。考慮以下課程。
public class FinancialsCalculator {
private int va11;
private int val2;
public int calculateFinancialsAppliedSum() {
//In actual application this calc get's Injected using Guice
Calculator calc;
//Some pre-processing to the values val1 and val2 will be performed here
return calc.getSum(val1, val2);
}
}
現在我需要單元測試上面的類。我想在calculateFinancialsAppliedSum方法的範圍內模擬Calculator類實例。
如果它處於FinancialsCalculator類的級別(即與val1和val2變量處於同一級別),我可以輕鬆地嘲笑它,並使用mockito的Whitebox.setInternalState()將該模擬實例設置爲該類級別private計算器的實例。
不幸的是,由於其他原因,我無法讓這個Calculator實例成爲FinancialsCalculator類的類級別私有實例。它必須在calculateFinancialsAppliedSum方法中。
那麼我怎麼可以在calculateFinancialsAppliedSum方法裏面模擬這個Calculator實例來測試呢?
「公共法內」沒有按」我看起來很清楚。你可以添加一個例子,或者展示一個你想要的「HypotheticalWhitebox」嗎? –
@JeffBowman添加了我想要實現的示例 –
Whitebox是PowerMock的一部分,而不是Mockito。 –