当前位置: 首页 > 知识库问答 >
问题:

无法使用PowerMockito存根静态方法调用

秦俊豪
2023-03-14
public class Util  {
    public static int returnInt() {
        return 1;
    }

    public static String returnString() {
        return "string";
    }
}
public class ClassToTest {
    public String methodToTest() {
        return Util.returnString();
    }
}
@RunWith(PowerMockRunner.class)
@PrepareForTest(Util.class)
public class PharmacyConstantsTest {    
    ClassToTest classToTestSpy;

    @BeforeMethod
    public void beforeMethod() {
        classToTestSpy = spy(new ClassToTest());
    }

    @Test
    public void method() throws Exception {
        mockStatic(Util.class);
        when(Util.returnString()).thenReturn("xyz");
        classToTestSpy.methodToTest();
    }
}

我使用web上的各种解决方案尝试了这个解决方案,但无法找到代码中的错误。我需要为静态方法调用存根,因为我需要它用于遗留代码。如何使用PowerMockito模拟静态方法?

共有1个答案

姬朗
2023-03-14

您需要将TestNG配置为使用PowerMock对象工厂,如下所示:

<suite name="dgf" verbose="10" object-factory="org.powermock.modules.testng.PowerMockObjectFactory">
    <test name="dgf">
        <classes>
            <class name="com.mycompany.Test1"/>
            <class name="com.mycompany.Test2"/>
        </classes>
    </test>
</suite>

在项目的suite.xml文件中。

请参阅此链接。

 类似资料:
  • 问题内容: 我正在为类似于以下示例的方法编写JUnit测试用例: 我在测试类中编写了以下测试用例: 现在,我想验证是否调用了Sample Sample类的static methodC()。如何使用PowerMockito 1.6实现?我已经尝试了很多东西,但是似乎对我来说没有用。任何帮助表示赞赏。 问题答案: 就我个人而言,我不得不说PowerMock等是您的代码不错的情况下不应该解决的问题的解决

  • 问题内容: 我正在尝试使用此功能,但正在收到消息。 我可以简单地使其静态化,从而解决了我的问题,但是如果不走那条路线怎么办。我想保持方法非静态。 以下是一些代码,可让您了解发生了什么: 问题答案: 创建您的课程的实例 这是一个实例方法,它需要一个实例来访问它。请阅读有关类和对象的官方教程。

  • PowerMockito.when(ConnectionFactory.getConn(“ABC”).getCurrentStatus()).thenReturn(ConnectionStatus.Connected); 对于上面的陈述,我得到了一个NPE。 我在junit测试类的开头已经有@PrepareForTest({fxallConnectionFactory.class,Connecti

  • 问题内容: 我正在尝试模拟私有静态方法。见下面的代码 这是我的测试代码 但是我运行的每个瓦片都会出现此异常 我想我在嘲弄东西时做错了什么。有什么想法我该如何解决? 问题答案: 为此,您可以使用和。 此外,您必须在测试类中指定PowerMock运行器,并准备要进行测试的类,如下所示: 希望对您有帮助。

  • 在尝试模拟InetAddress中的静态方法时,我遇到了奇怪的问题。我成功地能够为许多其他类模拟静态方法,并且一切正常,但InetAddress显示不同的行为。我使用的是JUnit 4. x、Mockito 1.9.5 下面给出了使用Mockito和PowerMock以及InetAddress模拟的测试- 当我将下面给出的方法放入某个实用程序InetAddress中时。getLocalHost()

  • 我读了几篇关于使用powermockito而不是仅仅使用mockito来测试静态方法的帖子,但是在切换到powermockito之后,我仍然会得到同样的错误。下面是我的类和例外。异常中的两种情况都不能解释我的错误。 最后一行代码导致这个异常org.mockito.exceptions.Misusing.MissingMethodInvocationException:when()需要一个参数,该参