我应该如何测试 java 休息 api?
How should I test a java rest api?
我想测试一下我的休息情况 api,但我不太清楚该怎么做。不是关于使用哪个库,而是我应该测试什么。
我的应用基本上是关于cruds和报告的。一些特定的 crud 根据提交的实体的状态填充另一个表。
如果我想测试这些行为,我应该直接测试 service/repository 层还是向我的端点发出请求?
P.S:我的应用程序将被 SPA 使用。所以可能我也需要测试那个应用程序的请求,对吗?
关于测试什么。你决定什么是好的测试,没有直接的答案。您指定的两个选项均有效。您可以只进行集成测试,也可以结合 service/repository 级别的单元测试 + REST 协议级别的集成测试。这在很大程度上取决于您要开发什么,但也取决于开发人员的偏好。近年来有越来越多的单元测试被集成测试取代的趋势。我个人更喜欢将两者结合起来,甚至以牺牲一些冗余为代价。
关于技术和工艺:
一个是 RestAsure 或 Spring Mvc。这将构建 spring 启动类型的集成测试层,或者我称之为集成测试 - light。
优点:您可以轻松打开和关闭不同的组件进行细粒度测试。它几乎可以像单元测试一样细粒度。
缺点:容易出现太多技术细节。
另一种方法是针对您的容器构建外部套装 - tomcat / jetty。
优点:您的测试独立于您的 component/deployment。它与组件实现完全无关。
缺点:您实际上有两个部署,一个用于测试,一个用于要测试的组件。
第三个有趣的方法是使用 Restdoc 并一次性记录您的 api 并构建一个完整的合同/集成测试。
优点: 一次获得集成测试+文档。
缺点:涉及更多工作的代价。
我想测试一下我的休息情况 api,但我不太清楚该怎么做。不是关于使用哪个库,而是我应该测试什么。
我的应用基本上是关于cruds和报告的。一些特定的 crud 根据提交的实体的状态填充另一个表。
如果我想测试这些行为,我应该直接测试 service/repository 层还是向我的端点发出请求?
P.S:我的应用程序将被 SPA 使用。所以可能我也需要测试那个应用程序的请求,对吗?
关于测试什么。你决定什么是好的测试,没有直接的答案。您指定的两个选项均有效。您可以只进行集成测试,也可以结合 service/repository 级别的单元测试 + REST 协议级别的集成测试。这在很大程度上取决于您要开发什么,但也取决于开发人员的偏好。近年来有越来越多的单元测试被集成测试取代的趋势。我个人更喜欢将两者结合起来,甚至以牺牲一些冗余为代价。
关于技术和工艺:
一个是 RestAsure 或 Spring Mvc。这将构建 spring 启动类型的集成测试层,或者我称之为集成测试 - light。
优点:您可以轻松打开和关闭不同的组件进行细粒度测试。它几乎可以像单元测试一样细粒度。 缺点:容易出现太多技术细节。
另一种方法是针对您的容器构建外部套装 - tomcat / jetty。
优点:您的测试独立于您的 component/deployment。它与组件实现完全无关。
缺点:您实际上有两个部署,一个用于测试,一个用于要测试的组件。
第三个有趣的方法是使用 Restdoc 并一次性记录您的 api 并构建一个完整的合同/集成测试。
优点: 一次获得集成测试+文档。
缺点:涉及更多工作的代价。