首页 > 解决方案 > 我可以用juni5和mockito或easymock模拟静态方法吗?

问题描述

我需要用junit5 (这很重要)和mockito或easymock来模拟一个静态方法。我看到 powermock 仅适用于 junit 4。是否有任何形式可以与 junit5 一起使用?

标签: mockingmockitoeasymock

解决方案


不是据我所知。最简单的方法是用非静态方法屏蔽它。

public class A {
    void foo() {
        Stuff s = MyClass.getStuff();
    }
}

会变成

public class A {
    private final StuffProxy stuffProxy;
    public A(StuffProxy stuffProxy) {
        this.stuffProxy = stuffProxy;
    }
    public A() {
        this(new StuffProxy());
    }
    void foo() {
        Stuff s = stuffProxy.get();
    }
}

public class StuffProxy {
    public Stuff get() {
        return MyClass.getStuff();
    }
}

然后你嘲笑StuffProxy.


推荐阅读