考虑两个类 A
和 B
。
class A { static int a(){} }
class B { void something(){ int value=A.a(); .......}}
现在我必须使用 Junit 测试用例来覆盖 B
类,因此我创建了一个新类(class TestB
)来覆盖 B
类>.
class TestB { @Test public void testsomething(){...} }
我的问题是,是否有任何方法可以覆盖 A.a()
行,因为这是静态方法。我知道我不能轻易模拟它,因为没有涉及任何对象。那么我将如何进行?
我正在使用 JUnit 和 EasyMock。
最佳答案
正如您所指出的,无法使用 easymock 模拟静态方法。
方法 1:尽可能不要使用静态方法。
方法 2:在 easymock 之上使用 PowerMock。
方法 3:通过在 a()
中使用供应商来委托(delegate) A.a()
的主体。您可以为测试用例使用“简单”供应商,为生产使用使用真实世界的供应商。
关于java - 如何使用 JUnit 模拟覆盖调用静态方法的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36441943/