假設我有這個功能:
fun method() {
val obj = Obj()
obj.callsMethod()
obj.callsOtherMethod()
}
我該如何做類似于 verify(obj).callsMethod() 的事情?有沒有其他方法可以測驗這種方法?
uj5u.com熱心網友回復:
你有三種選擇:
- 使用注射
- 使用PowerMockito
- 以測驗友好的方式重構代碼
使用注射
如果物件 Obj 被注入到你的被測類中,而不是在方法中被初始化,你將能夠注入一個模擬然后使用運算式
verify(obj).callsMethod()
你已經知道了,這是對的。
使用 PowerMockito
使用 powermockito 你可以寫這樣的東西
@RunWith(PowerMockRunner.class)
@PrepareForTest({Obj.class})
class MyJunit{
....
@Test
public void test() throws Exception{
Obj myMock = Mockito.mock(Obj.class);
PowerMockito.whenNew(Obj.class).withAnyArguments().thenReturn(myMock);
// here your test
}
此時你可以使用你已經知道的表達,這是正確的。
重構
您可以使用一種protected方法來構建 thObj并在您的 junit 中模擬此方法,以便回傳 Obj 的模擬版本,然后使用您已經知道的運算式,這是正確的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/316781.html
