我已经研究了很多,但无法找到合适的解决方案,
我在服务类中有一个调用消费者的方法,如下所示
try {
snsProducer.send(message);
} catch (JsonProcessingException jpe) {
throw new SnSException(
"Could not parse Message to publish to SNS");
}
我试图通过测试用例覆盖catch块,但仍然不成功。
这是我尝试过的
@Test
void snsTest() {
when(service.doCreate(message)).thenThrow(new JsonProcessingException("Json Processing Error"){});
assertThrows(SnSException.class,()-> service.doCreate(message));
}
但这会引发Checked exception is invalid for this method!
我也试过这个
when(service.doCreate(message)).thenThrow(new JsonProcessingException("Exception"){});
assertThrows(SnStateException.class,()-> service.doCreate(message));
但这会引发错误Expected SnSException to be thrown, but nothing was thrown.
完成测试用例
@Test
void doCreateTest(){
String id = RandomStringUtils.randomAlphanumeric(20);
Subscription subscription = testUtils.createEntity(sId,RandomStringUtils.randomAlphanumeric(20));
Manifest manifest = new Manifest();
manifest.setCommon(new Common());
doReturn(manifest).when(manifestUtils).getManifestWithLatestVersion(any());
when(service.doCreate(subscription)).thenThrow(new JsonProcessingException("Exception"){});
assertThrows(SnSException.class,()-> service.doCreate(subscription));
}
我不知道我做错了什么,任何帮助都将不胜感激
1条答案
按热度按时间mrwjdhj31#
从您的代码中,我可以看到snsProducer.send(message)正在抛出已检查的异常JsonProcessingException。因此,when().thenThrow()应该围绕它编写。