在一个类中使用 Mockito 间谍从另一个类调用静态方法



尝试使用Mockito的间谍功能进行我的JUnit测试。我最初有一个班级:

public class App1 { 
    public String method1() {
        sayHello();
    }
    public sayHello() {
        Systems.out.println("Hello");
    }
}

我的测试类中的所有内容都可以正常工作,并且模拟监视了上面的类:

@Test(expected = IOException.class)
public void testMethod1Failure(){   
    App1 a1 = spy(App1);
    doThrow(IOException.class).when(a1).sayHello();
    a1.method1();
}

但是在那之后,我不得不切换东西并将sayHello((方法放入另一个类中用作静态方法:

public class App1 { 
    public String method1() {
        App2.sayHello();
    }
}
public class App2 { 
    public static void sayHello() {
        Systems.out.println("Hello");
    }
}

在此更改之后,我原来的 JUnit 测试用例被破坏了,我不确定如何使用 Mockito 间谍来启动调用外部 App1 静态方法的 App2...有谁知道我该怎么做?提前致谢

Mockito不支持模拟静态代码。以下是一些处理它的方法:

    使用
  • PowerMockito 或类似的框架,如下所示:使用 Mockito 模拟静态方法。
  • 重构将静态方法转换回实例方法的代码。正如你已经发现的,静态方法不容易进行单元测试。
  • 如果执行有问题的实际静态方法成本低廉,那么只需调用它。

相关内容

  • 没有找到相关文章

最新更新