,如果你真的想這樣做應該做的重新設計類似如下(丹還建議)
import org.junit.Test;
import org.mockito.Mockito;
public class TestingMock {
@Test
public void test() {
MyClass target = Mockito.spy(new MyClass());
AnotherClass anotherClassValue = Mockito.spy(new AnotherClass());
Mockito.when(target.createInstance()).thenReturn(anotherClassValue);
target.myfunction();
Mockito.verify(anotherClassValue).somethod();
}
public static class MyClass {
public void myfunction(){
AnotherClass c = createInstance();
c.somethod();//This method sets some values of the AnotherClass object c;
}
protected AnotherClass createInstance() {
return new AnotherClass();
}
}
public static class AnotherClass {
public void somethod() {
}
}
}
你會看到註釋掉c.somethod()使測試失敗。 我正在使用Mockito。
嘗試測試調用myfunction()方法的結果。如果變量'c'是方法局部變量當你調用c.somethod()時會發生什麼?外部可觀察到的結果是什麼? –
結果不能從外部獲得。 c.somemethod()設置在myfunction() – user1312312
中創建的c的值,您應該以某種形式對外部可用的單元測試功能進行單元測試。如果做c.somethod()沒有做任何外部可見的然後恕我直言,你不需要單元測試它 –