繁体   English   中英

如何为 static void 方法实现 doNothing()?

How to implement doNothing() for static void method?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我试图模拟一个 static void 方法,我尝试了 PowerMock 但总是得到 NullPointer 异常。

我们正在尝试模拟以下调用 -

public Class XYZ{
  public void method1(){
     ....
     SampleClass.methodTypeStatic1().methodTypeStatic2("xyz", "mno", classVeriable);
}

而主要的class是——

public class SampleClass implements SampleClassParent{

private static SampleClass var1;

public static SampleClass methodTypeStatic1(){
    if (var1 == null) {
        //Do something on var1
    }
    return var1;
}

public void methodTypeStatic2(String localVar1, String localVar2, DifferentStaticClass localVar3) {
    //Do something
}}

我试图在我的测试 class 中以这种方式模拟呼叫 -

@RunWith(PowerMockRunner.class)
@PrepareForTest({SampleClass.class})
public class XYZTest{

   @InjectMocks
   XYZ xyzTestService;

   @Test
   public void testMethod1(){
     ...
     PowerMockito.mockStatic(SampleClass.class);
     PowerMockito.doNothing().when(SampleClass.methodTypeStatic1());
     xyzTestService.method1();
}

还要提到的是 SampleClass.class 不是我们代码的一部分,我们已将此外部 class 导入我们的代码库以执行某些任务。

1 个回复

如果要模拟非 void 方法,则需要在模拟上定义此方法的行为。 您可以免费获得doNothing (因为这是 mocking 所做的),但是您需要定义该方法应该返回的内容。

您的测试可能如下所示:

@Test
public void testMethod1() {

    SampleClass sample = new SampleClass();

    PowerMockito.mockStatic(SampleClass.class);
    PowerMockito.when(SampleClass.methodTypeStatic1()).thenReturn(sample);

    XYZ xyzTestService = new XYZ();
    xyzTestService.method1();
}

您没有提及任何@Mock注释,因此使用@InjectMocks除了创建XYZ object 之外对您没有任何帮助。

1 在Mockito中使用doNothing()的非void方法?

我有一个单元测试,用于测试将文件上传到GCP存储。 这是上传文件的代码。 在单元测试中,我做了类似的事情, 我正在尝试做的是防止调用create()方法。 我的观点是,我不想将其真正上传到GCP,因为这是一项测试。 所以我尝试了如上所述。 但是我有一个错误 UPD ...

4 在其他类中具有参数的doNothing非void方法

目前,我正在为aClass中的aClass创建一个JUnit测试用例。 但是,我不想在meth2中调用bClass ,只需在aClass中执行busslogic aClass 。 类aClass和bClass是固定的-我无法更改其代码。 我试图像许多事情@InjectMocks和do ...

8 调用 final 类的静态方法时如何 PowerMockito.doNothing?

我在其中一个实用程序类中有这行代码 当通过测试执行上述代码行时,我不希望发生任何事情。 我用以下注释对类进行了注释。 我尝试使用以下选项不做任何事情: 我总是在测试执行时收到以下错误。 关于在调用 System.setProperty 时我无能为力的任何建议。 请注意 System ...

9 Java Stringbuilder实现void方法

我对StringBUilder.append()感到困惑。 Netbeans表示不允许使用void类型。 这是我的Java类Levencthein.java 现在,在另一个类中,假设在b.java中 有什么办法吗? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM