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

Anyway to create a Test Helper class that creates mocks?

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

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

public void mockClassINeedToMockToReturn(Boolean bool){
   mockStatic(classINeedToMock.class); 
   when(classINeedToMock.getSuccess(Mockito.any(someClass.class))).thenReturn(bool);
}

我已经尝试在 HelperTest.class 中进行设置(在与我的测试相同的 project/folder 中)但它不起作用。我在 class.

中包含了以下两个注释
@RunWith(PowerMockRunner.class)
@PrepareForTest({classINeedToMock.class})

我试过:

  1. 静态使用这些方法并在我的测试中调用它们。 (不嘲笑)
  2. 正在创建一个 HelperTest 对象并在我的测试中调用该方法。 (还是不嘲讽)
  3. 让我的测试扩展我的 HelperTest.class 并从我的测试中调用该方法。 (仍然拒绝嘲笑class)

我确定这与 PowerMockRunner 的工作方式有关。那么有没有办法使这项工作?或者我应该接受在整个项目中复制这些方法。

这是一些小细节....当进一步研究时,我注意到 class 我在嘲笑有 2 个不同的方法。

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

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

在使用正确的输入参数设置正确的 mock 之后,我可以静态调用该方法,并且将正确地创建和使用 mock。