无论如何要创建一个创建模拟的测试助手类?

时间:2016-01-09 00:32:08

标签: java testing mocking powermock powermockito

在我对遗留系统的测试中,我发现自己不得不为系统的不同部分模拟类似的类我正在增加测试覆盖率。我想为我的测试创建一个帮助类,可以调用一个方法来设置特定的模拟及其返回值。

这是我在多个测试中创建几次的方法示例。

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})

我试过了:

  1. 静态使用这些方法并在我的测试中调用它们。 (不嘲笑)
  2. 创建一个HelperTest对象并在我的测试中调用该方法。 (仍然不会嘲笑)
  3. 让我的测试扩展我的HelperTest.class并在我的测试中调用该方法。 (仍然拒绝嘲笑班级)
  4. 我确信这与PowerMockRunner的工作方式有关。有没有办法使这项工作?或者我应该在整个项目中复制这些方法。

1 个答案:

答案 0 :(得分:0)

这是一个小细节....当我看到它时,我注意到我正在嘲笑的课程有两种不同的方法。

theClass.method(var1, var2);
theClass.method(var1, List<var2>); 

我的一个测试是调用第一个方法,另一个是调用第二个方法。当我运行第二个测试时(只是模拟了第一个方法),它正在调用实际的类,因为该方法没有被模拟。

在使用正确的输入参数设置正确的模拟后,我可以静态调用该方法,并且可以创建并适当地使用模拟。