在对遗留系统的测试中,我发现自己不得不对系统的不同部分模拟类似的类,因为我正在增加测试覆盖率。我想为我的测试创建一个助手类,它可以调用一个方法来设置特定的模拟及其返回值。
下面是一个我不得不在多个测试中创建几次的方法的例子。
public void mockClassINeedToMockToReturn(Boolean bool){
mockStatic(classINeedToMock.class);
when(classINeedToMock.getSuccess(Mockito.any(someClass.class))).thenReturn(bool);
}
我尝试在HelperTest.class中设置它(与我的测试位于同一个项目/文件夹中),但它没有工作。我已经在这个类中包含了以下两种注释。
@RunWith(PowerMockRunner.class)
@PrepareForTest({classINeedToMock.class})
我试过:
我确信这与PowerMockRunner的工作方式有关。有办法让这件事成功吗?或者我应该接受在整个项目中复制这些方法。
发布于 2016-01-08 16:53:15
关键是细节..。当我更多地研究它时,我注意到我正在嘲笑的类有两种不同的方法。
theClass.method(var1, var2);
theClass.method(var1, List<var2>);
我的一个测试是调用第一个方法,另一个是调用第二个方法。当我运行第二个测试(只是模拟了第一个方法)时,它正在调用实际的类,因为该方法没有被模拟。
在使用适当的输入参数设置正确的模拟之后,我可以静态地调用该方法,并将适当地创建和使用模拟。
https://stackoverflow.com/questions/34688353
复制