java - 如何实际测试具有空指针异常的 Controller 的服务器响应

标签 java spring rest

我想编写一个测试来评估处理请求时出现 NullPointerException 的 Controller 的响应。

为此,我编写了一个 Controller ,在处理请求时抛出 NullPointer。使用 MockMVC Controller ,我向该 Controller 发送 GET 请求。

在处理空指针时抛出空指针的 Controller :

@Controller
public class Controller{  

    @GetMapping(value = "/api/data")
    @ResponseBody
    public ResponseEntity<Resource> getData() {

        if (true)
            throw new NullPointerException(); // Intended Nullpointer Exception 

        return ResponseEntity.notFound().build();
    }
}

我期望收到 500 错误的测试函数:

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc

public class Test {

    @Autowired
    protected MockMvc mockMvc;

    @Test
    public void shouldReturn500StatusWhenControllerThrowsAnException() throws Exception {
        MvcResult result = this.mockMvc.perform(get("/api/data"))
            .andExpect(status().is5xxServerError())
            .andReturn();
    }

}

我希望 MockMVC 请求返回错误 500,就像真实 Controller 作为服务器运行时所做的那样。 实际上,MockMVC 只是因 NullPointer 异常而失败,并且不返回任何内容。

最佳答案

在原始问题中添加更多信息后进行编辑: 我遇到了同样的问题,尝试使用这些注释而不是您拥有的三个注释:

@RunWith(SpringRunner.class)
@WebMvcTest
@AutoConfigureWebClient

关于java - 如何实际测试具有空指针异常的 Controller 的服务器响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55710454/

相关文章:

Java 9 嵌套(分层或父/子)模块

java - 将现有的 Jersey Postgres 应用程序迁移到 Spring Boot

java - 构造函数需要一个无法找到的 bean 类型

javascript - 使用带有 Node.js 的 REST api 服务器连接到我的 sql 数据库时出现问题

ruby-on-rails - 仅设置成员路由时排除 CRUD 资源

java - 正则表达式:从前一组匹配的出现次数中获取要匹配的出现次数

java - 我的 java swing 表单无法启动

java - Hibernate 中 session.flush() 有什么用

java - Spring @Component 未正确读取 .properties 字段

java - 如何解决 HTTP Status 500 - ContainerException java.lang.NoSuchMethodError 错误