32

我想ContentIOException从一个签名看起来像这样的方法中抛出一个。

public void putContent(InputStream is) throws ContentIOException.

当我尝试ContentIOException像这样从 Mockito 抛出时:

when(StubbedObject.putContent(contentStream)).thenThrow(ContentIOException.class);

我收到以下编译错误:

The method when(T) in the type Mockito is not applicable for the arguments (void).

我究竟做错了什么?

4

2 回答 2

46

看看官方 API 中的这个参考。您想反转调用方式并调整参数,因为这是void您希望引发异常的方法。

doThrow(new ContentIOException()).when(StubbedObject).putContent(contentStream);
于 2012-12-17T06:06:43.920 回答
0

您可以使用以下代码

    when(testRepositoryMock.findOne(123)).thenThrow(new NullPointerException());

然后在你可以检查你的逻辑之后

        String erroResponse= service.testMethodForResponse(accountNum);
        JSONObject jsonObj = new JSONObject(erroResponse);
         String _acNo = jsonObj.getString("accountNum");
        assertEquals(accountNum, _acNo);
        }

如果您使用的是 Spring Boot,则添加顶级

@SpringBootTest
@RunWith(MockitoJUnitRunner.class)

在类内部,您需要注入对象

@InjectMocks //actual object you want to get test coverage
private TestService testService;
@Mock //Mock object which call by actual object for mocking
private testRepository testRepositoryMock;

参考链接:http ://www.baeldung.com/mockito-behavior

于 2017-06-07T20:15:41.257 回答