java - 将模拟的静态方法传递给另一个类

标签 java unit-testing mockito powermock

我在测试类中使用 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() 方法。

最佳答案

PowerMock 并不能真正实现您想要实现的目标。还有另一个模拟框架,它可以通过检测字节码来模拟几乎所有内容 - JMockit

至于你的问题 - 也许 that会有所帮助

关于java - 将模拟的静态方法传递给另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29437353/

相关文章:

java - Fat jar 中 JasperReport 文件未找到错误

javascript - 看似相等的物体其实并不相等

unit-testing - 我对必须从 ASP.Net 和 WinForms 使用的库进行 nunit 测试的最佳位置是什么

angular - 如何解决 Angular 单元测试错误 : "An error was thrown in afterAll\n[object ErrorEvent] thrown"

java - 哪里可以下载Mockito 2.3.3 Jar?

java - Spring Autowiring 与继承

java - 如何在eclipse中执行页面对象程序?

java - 为什么 Mockito 不能在 Kotlin 中模拟具有数字类型的泛型参数类型?

java - java中的导出和导入函数

java - 类中几个方法的强制签名