gpt4 book ai didi

java - 如何使用 JUnit 模拟覆盖调用静态方法的方法?

转载 作者:行者123 更新时间:2023-11-29 02:58:53 26 4
gpt4 key购买 nike

考虑两个类 AB

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com