我在我的测试类中嘲笑了一个使用Powermock的类的静态方法。我面临的问题是,这个静态方法不是直接在我的测试类中调用,而是在其他类中调用。以下是骨架:将模拟静态方法传递给另一个类
@Test public void myTest() {
PowerMockito.mockStatic(MyClassWithStaticMethod.class);
PowerMockito.when(MyClassWithStaticMethod.staticMethod()).thenReturn("...");
List<String> details = MyHelperClass.getDetails();
...
...
}
现在MyHelperClass.getDetails调用需要,因为它依赖于一个服务被嘲笑的方法。
MyHelperClass.java
public static List<String> getDetails() {
...
...
MyObj obj = MyClassWithStaticMethod.staticMethod(); //This needs to return mocked value
...
...
}
有没有办法通过的嘲笑对象,以辅助类? PowerMockito.mockStatic返回void,其中PowerMockito.mock不会模拟静态方法。所以我无法弄清楚如何将模拟对象传递给助手类getDetails()方法。
谢谢!起初我对使用JMockit犹豫不决,因为mockito已经被使用,我想通过使用PowerMock和mockito来找出解决方案。我碰到几个让JMockit运行的问题 - 必须将我的Junit升级到4.12,因为JMockit仅支持JUnit 4.5+(它是一个加号,但是我希望我们的代码中的Junit 4.4测试没有在4.12中不支持的东西)。但所有的麻烦都完全值得成为JMockit这样美丽的朋友! :) – Pankaj 2015-04-06 18:34:33
欢迎:) – jdevelop 2015-04-06 20:31:08
测试应该更容易用JMockit编写,但它应该也适用于PowerMock。我想知道OP是否忘了在测试课上使用'@ PrepareForTest'? – 2015-04-15 13:31:41