【发布时间】:2015-10-19 08:10:30
【问题描述】:
我正在使用 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 类代码的情况下继续测试(不想仅仅为了测试而修改它)。
【问题讨论】:
-
@JBNizet 想要回答这个问题,这样我就可以投票了吗?显然,这是正确的。
-
@DavidWallace 完成。谢谢你让我不那么懒惰:)