我正在爲使用mockito和testng的類編寫測試。要測試的類有幾個依賴需要被模擬和注入。要測試的類具有以下輪廓如何模擬注入模擬對象的方法
class A{
@Autowired
private Object1;
@Autowired
private Object2;
Object3 methodToBeTested(){
//some code
method2();
//some code
}
boolean method2(){
//some calls to Database that are not operational
}
}
在我的測試類,我聲明的對象Object1和Object2的是嘲笑和初始化它們如下
@Mock
Object1 ob1;
@Mock
Object2 ob2;
@InjectMocks
A a = new A();
@Test
public void ATest(){
Object3 ob3;
when(ob1.someMethod()).thenReturn(someObject);
when(ob2.someMethos()).thenReturn(someOtherObject);
ob3 = a.methodToBeTested();
assertNotNull(ob3);
}
問題就出現了,因爲我有嘲笑對類A的方法2的調用,以及它有一些調用在測試階段不可操作。 mockito也不允許一個對象同時擁有@Mocks和@InjectMocks註釋。有沒有一種方法可以在不修改A類代碼的情況下進行測試(不想僅僅爲了測試而修改它)。
http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html#13 –
@JBNizet想讓這個答案,我可以upvote它?顯然,這是正確的。 –
@DavidWallace完成。謝謝你讓我不那麼懶惰:) –