Spring 应该测试@RestController还是只测试@Service

Spring 应该测试@RestController还是只测试@Service,spring,testing,junit,Spring,Testing,Junit,我有一个3层的应用程序:控制器、服务和存储库 我的控制器是一个Rest(spring中的@RestController),它只使用DTO获取请求,转换为模型并传递给服务(spring中的@service) 我的服务具有所有业务逻辑,我的测试类仅基于服务类 我的存储库只是一个JpaRepository,有时使用带有@query的自定义查询 正如我所说,我只是为服务创建测试类,因为这是我的业务逻辑。我的问题是关于如何为控制器类创建测试,它真的有必要吗?这是一种好的做法吗?当然,这是必须的。我们必

我有一个3层的应用程序:控制器、服务和存储库

  • 我的控制器是一个Rest(spring中的@RestController),它只使用DTO获取请求,转换为模型并传递给服务(spring中的@service)

  • 我的服务具有所有业务逻辑,我的测试类仅基于服务类

  • 我的存储库只是一个JpaRepository,有时使用带有@query的自定义查询


正如我所说,我只是为服务创建测试类,因为这是我的业务逻辑。我的问题是关于如何为控制器类创建测试,它真的有必要吗?这是一种好的做法吗?

当然,这是必须的。我们必须测试应用程序的所有层,因为每个层都提供特定的元素:服务业务逻辑、存储库数据访问、控制器http输入和输出


对于每个端点,您可以测试它是否返回适当的状态代码、标题、正文等。此外,您还应该测试错误响应。考虑每个端点的所有可能性,200、201、4xx、5xx情况。

当然这是必须的。我们必须测试应用程序的所有层,因为每个层都提供特定的元素:服务业务逻辑、存储库数据访问、控制器http输入和输出


对于每个端点,您可以测试它是否返回适当的状态代码、标题、正文等。此外,您还应该测试错误响应。考虑每个端点的所有可能性,200、201、4xx、5xx情况。

单元测试?可能没用。但是您可以编写有价值的集成测试;查找MockMvc。是的,我正在考虑使用MockMvc进行控制器单元测试?可能没用。但是您可以编写有价值的集成测试;查找MockMvc。是的,我正在考虑使用MockMvc向我的控制器询问答案,我认为这足够了。谢谢你的回答,我认为这足够了。