在编写一些我发现的单元测试时,我们使用了很多来自Utility-classes的静态方法调用。现在有了Mockito,我无法嘲笑他们的召唤。那么最好的方法是什么?
我知道写了公共方法,在我刚刚返回静态调用的类中。例如:
public String getName(File file){ return PDFUtil.getName(file); }
然后我在另一个方法中调用public方法。现在我可以用Mockito和Spying来模拟getName()
方法。
然而有两件事:
PDFUtil.getName(File)
方法,所以我应该只有一个类,并且应该只实现一次getName()。 答案 0 :(得分:0)
您可以使用PowerMock直接模拟静态方法。假设你有这个课程:
public class StaticMethodClass {
public String method() {
return StaticMethodClass.staticMethod();
}
public static String staticMethod() {
return "hello world";
}
}
单元测试可能如下所示:
@RunWith(PowerMockRunner.class)
@PrepareForTest(StaticMethodClass.class)
public class UnitTest {
@Test
public void test() {
PowerMockito.mockStatic(StaticMethodClass.class);
PowerMock.when(StaticMethodClass.staticMethod()).thenReturn("yeah");
assertEquals("yeah", new StaticMethodClass().method());
}
}
注意:我实际上没有测试过这段代码。把它作为提示: - )