如何使用莫基托进行系统测试?我们应该吗?

我的项目包括各种使用第三方API的弹簧启动。@Service

我们已经为每个这样的服务编写了一个模拟类,并且我们以这样的方式运行系统测试,即Spring Boot选择模拟的类而不是真实的类(使用)。@Profile("test")

这样做的动机是:

  1. 仅测试逻辑(即使这可以通过单元测试来完成)

  2. 根据经验测试系统是否线程安全

  3. 我们不能广泛使用我们的API(速率限制),但我们希望在足够多的项目上运行我们的系统。

我的问题:

  1. 您是否提倡将这种方法用于系统测试?(所有组件都被嘲笑)

  2. 如果是这样,像莫基托这样的模拟框架能做到吗?Mockito的全部意义在于自己编写模拟类,而是如何在多个bean使用服务的系统测试中完成它?


繁星coding
浏览 68回答 1
1回答

潇潇雨雨

这是通过模拟对外部服务的调用来对服务进行单元测试的好方法。您可能希望将测试分为测试和测试。通常,单元测试通过使用存根类(如您所做的那样)或使用模拟库(如 mockito)来模拟任何外部服务调用,并且您模拟服务的返回值。unitintegration@Profile在集成测试中,这将是一个更好的系统测试,您将使用通过“模拟”外部服务的响应的模拟库(即WireMock)提供的存根文件。如果外部 API 返回 JSON,则可以让一个或模拟库为实际的 JSON 响应提供服务。通过执行此操作,您正在测试您的服务是否确实进行了 API 调用,并对存根结果执行了操作。您的服务不会调用实际的 API URL,而是让它调用您的控制器或 WireMock URL。ControllerController
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java