gpt4 book ai didi

java - 使用 JUnit 捕获异常

转载 作者:行者123 更新时间:2023-12-01 10:29:07 35 4
gpt4 key购买 nike

我正在为一个方法编写一个 JUnit 测试用例,为了增强我的 Cobertura 分支覆盖率,我想捕获异常,但不确定为什么测试没有捕获异常。

待测试方法:

 public void getCondition( Map<String, Message> messagesMap ) throws EISClientException
{
Message message = containsAMessageCode(getMessageCodes(), messagesMap);
if(message!=null)
{
throw new EISClientException("One of the specified message code matched returned errors." +
message.getMessageCode() + ": " + message.getMessageType() + ": " + message.getMessageText());

}
}

JUnit 测试:

@Test
public void testgetCondition() throws Exception {
boolean caughtException = false;
try {
clientResponse = mock(ClientResponse.class);
RetrieveBillingServiceResponse response = new RetrieveBillingServiceResponse();

MessageToExceptionPostProcessFilter postProcessFilter = new MessageToExceptionPostProcessFilter();
postProcessFilter.setCondition(ConditionOperator.OR);

Message message = new Message();
message.setMessageCode("200");
message.setMessageType(MessageTypeEnum.MESSAGE_TYPE_INFO);
message.setMessageText("Service completed successfully");

response.setMessages(Arrays.asList(message));

Map<String, Message> map = new HashMap<String, Message>();
map.put("test", message);

RetrieveBillingServiceResponse serviceResponse = postProcessFilter.getCondition(map);

} catch (EISClientException ex) {
caughtException = true;
assertEquals("One of the specified message code matched returned errors.", ex.getMessage());
}
assertTrue(caughtException);
}

如果消息不为空,它应该捕获异常,但事实并非如此。我做错了什么吗?

谢谢

最佳答案

测试引发预期异常的另一种方法是在导致异常的测试代码行之后添加一个fail()。

如果抛出异常,您将跳转到 catch 处,并且永远不会调用失败(),如果没有抛出异常,则失败()将在应该抛出异常的行之后执行,并且您的测试失败。

另外,看看您当前的assertEquals() - 您正在比较的字符串与您在创建异常时构建的字符串不同。

关于java - 使用 JUnit 捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35188743/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com