我正在为使用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完成。谢谢你让我不那么懒惰:) –