应该测试@RestController或仅测试@Service

时间:2018-11-29 19:16:55

标签: spring testing junit

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

  • 我的控制器是Rest(在春季为@RestController),它仅使用DTO获取请求,转换为Model并传递给服务(在Spring为@Service)。

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

  • 我的存储库只是一个JpaRepository,有时会通过@Query使用自定义查询。

正如我所说,我只是为Service创建测试类,因为这是我的业务逻辑。我的问题是关于如何为控制器类创建测试,这真的必要吗?这是一个好习惯吗?

1 个答案:

答案 0 :(得分:2)

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

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