Powermockito doNothing用于带参数的方法

我已经用Java开发了一个应用程序,并试图使用Powermockito创建单元测试(我应该补充说我是单元测试的新手)。

我有一个名为Resource的类,该类具有一个称为readResources的静态方法:

public static void readResources(ResourcesElement resourcesElement);

ResourcesElement也由我编码。在测试中,我想创建自己的资源,因此我希望上述方法什么都不做。我尝试使用此代码:

    PowerMockito.spy(Resource.class);

PowerMockito.doNothing().when(Resource.class, "readResources", Matchers.any(ResourcesElement.class));

单元测试引发异常:

org.mockito.exceptions.misusing.UnfinishedStubbingException:在此处检测到未完成的存根:->

org.powermock.api.mockito.internal.PowerMockitoCore.doAnswer(PowerMockitoCore.java:36)

Powermockito还建议我应该在when之后使用thenReturn或thenThrow,但是似乎在doNothing之后调用’when’方法时返回void(这是逻辑上的)。如果我尝试:

PowerMockito.when(Resource.class, "readResources", Matchers.any(ResourcesElement.class)).....

什么时候之后都不要选择什么都不做。

我设法使用方法的2个参数版本使无参数的方法不执行任何操作。例如:

PowerMockito.doNothing().when(Moduler.class, "startProcessing");

这有效(startProcessing不接受任何参数)。

但是,如何使使用参数的方法对Powermockito无效呢?

回答:

您可以在下面找到功能完整的示例。由于您没有发布完整的示例,因此我只能假设您没有使用@RunWith或注释测试类,@PrepareForTest因为其余的看起来不错。

@RunWith(PowerMockRunner.class)

@PrepareForTest({Resource.class})

public class MockingTest{

@Test

public void shouldMockVoidStaticMethod() throws Exception {

PowerMockito.spy(Resource.class);

PowerMockito.doNothing().when(Resource.class, "readResources", Mockito.any(String.class));

//no exception heeeeere!

Resource.readResources("whatever");

PowerMockito.verifyStatic();

Resource.readResources("whatever");

}

}

class Resource {

public static void readResources(String someArgument) {

throw new UnsupportedOperationException("meh!");

}

}

以上是 Powermockito doNothing用于带参数的方法 的全部内容, 来源链接: utcz.com/qa/436044.html

回到顶部