我有一个单元测试,用于测试将文件上传到GCP存储。 这是上传文件的代码。 在单元测试中,我做了类似的事情, 我正在尝试做的是防止调用create()方法。 我的观点是,我不想将其真正上传到GCP,因为这是一项测试。 所以我尝试了如上所述。 但是我有一个错误 UPD ...
提示:本站收集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 导入我们的代码库以执行某些任务。
如果要模拟非 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 之外对您没有任何帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.