在我的工作中,我们最近整合了几个测试套件来测试我们构建的一些 RESTful API。与您的服务一样,我们的服务可以调用它们所依赖的其他 RESTful API。我们把它分成两个套房。
我肯定会推荐这样做。它对我们来说非常有效。主要优点是:
- 对等服务是模拟的,因此您无需执行任何复杂的数据设置。在每次测试之前,您只需使用restito 来定义您希望对等服务的行为方式,就像您在使用Mockito 的单元测试中使用类一样。
- 该套件速度非常快,因为模拟服务提供预先存储的内存响应。因此,我们可以在套件运行时间不长的情况下获得良好的覆盖率。
- 该套件是可靠且可重复的,因为它隔离在自己的 JVM 中,因此无需担心其他套件/人员在套件运行的同时在共享环境中乱搞并导致测试失败。
- 套房 2 - 完整的端到端
- 套件针对部署在多台机器上的完整环境运行
- 环境中部署在Tomcat上的API
- 对等服务是真实的“实时”完整部署
该套件要求我们在对等服务中进行数据设置,这意味着测试通常需要更多时间来编写。我们尽可能使用 REST 客户端在对等服务中进行数据设置。
该套件中的测试通常需要更长的时间来编写,因此我们将大部分覆盖范围放在套件 1 中。话虽如此,该套件仍然具有明显的价值,因为套件 1 中的模拟可能与真实服务的行为不太一样。
关于您的观点,这是我们所做的:
- 能够定义执行业务场景的集成测试用例。
- 在运行套件之前使用测试数据设置数据库。
- 我们不会为我们的集成套件执行此操作,但过去我曾将unitils与 dbunit 一起用于单元测试,并且效果很好。
- 调用在远程服务器 (Tomcat) 上运行的 REST API
- 验证数据库后测试执行以验证预期输出
- 我不能在这里提供任何建议,因为我们不使用任何库来帮助简化此操作,我们只是手动完成。如果你发现什么,请告诉我。
- 拥有 REST API 的代码覆盖率报告,以便我们知道我们应该对套件所涵盖的场景有多大信心。
- 我们不为我们的集成测试测量代码覆盖率,只为我们的单元测试,所以我不能在这里提供任何建议。
请密切关注我们的技术博客,因为将来可能会有更多详细信息。