gpt4 book ai didi

java - 抛出预期异常后测试响应

转载 作者:行者123 更新时间:2023-12-02 08:45:58 26 4
gpt4 key购买 nike

使用下面的测试 (JUnit4),不会调用断言。这是预期的行为吗?我预计会抛出 ResponseStatusException,测试会验证这一点,但随后我希望对响应进行断言。或者是抛出异常检查响应内容无效的推理?

@Test(expected = ResponseStatusException.class)
public void testResponse(){

final Long ticketId = null

when(service.getTicket(null))
.thenThrow(new NullPointerException("ticketId cannot be null"));

//Execute
ResponseEntity<List<TicketResponse>> response = service.getTicket(null);

assertEquals(HttpStatus.OK, response.getStatusCode());


}

最佳答案

是的,这是正常的,但请注意,您无论如何都无法验证响应,因为会抛出异常,因此您不会得到响应!不过,您可以验证异常状态。

为此,您可能需要阅读官方 Junit 4 文档的“异常测试”页面(代码取自那里),其中您基本上使用 assertThrows 方法,而不是 @Test(expected=),它允许您进行更多验证。

另一种替代方法是使用ExpectedException 规则。再次,请参阅链接中的示例。

https://github.com/junit-team/junit4/wiki/Exception-testing

@Test
public void testExceptionAndState() {
List<Object> list = new ArrayList<>();

IndexOutOfBoundsException thrown = assertThrows(
IndexOutOfBoundsException.class,
() -> list.add(1, new Object()));

// assertions on the thrown exception
assertEquals("Index: 1, Size: 0", thrown.getMessage());
// assertions on the state of a domain object after the exception has been thrown
assertTrue(list.isEmpty());
}

关于java - 抛出预期异常后测试响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61087747/

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