【问题标题】:How to use PowerMockito to mock new class instance inside a static method如何使用 PowerMockito 在静态方法中模拟新类实例
【发布时间】:2016-03-15 18:22:20
【问题描述】:

我有一个带有静态方法的类,在静态方法中我创建了一个不同类的实例并将其保存在地图中。我需要为此方法编写单元测试。最好的方法是什么?

例如:

public class MyClass {

public static synchronized void method (String str1, String str2, Object obj){

   do something.....

        DifferentClass dc =  new DifferentClass(str1,str2,obj);
        dc.methodCall();

   do something.....

}

}

尝试这样做:

DifferentClass  dc = PowerMockito.mock(DifferentClass.class);
        PowerMockito.whenNew(DifferentClass.class).withArguments(str1,str2,obj).thenReturn(dc);

我得到空指针异常 dc.methodCall();

谢谢

【问题讨论】:

    标签: java unit-testing static mockito powermockito


    【解决方案1】:

    确保您在@PrepareForTest 中有MyClass。 另外,我建议使用withParameterTypes。这不是强制性的,但它有助于避免一些错误。

    【讨论】:

      【解决方案2】:

      模拟可能不起作用。在 withArguments() 方法调用中使用 Powermockito.anyString() 或类似的东西(我不确定正确的版本)。不要这样使用字符串。

      【讨论】:

      • 我使用了 withArguments(Mockito.anyString(),Mockito.anyString(),Mockito.anyObject()) 并且它有效。谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-24
      相关资源
      最近更新 更多