用于集成测试的 Java 测试项目



我必须使用一些旧的Java应用程序。 共有6个项目:

  • 使用 REST 和 MQ 进行通信,以及
  • 已经有一些集成测试。

作为其中的一部分:

  1. mvcMock 模拟用于来自测试的初始请求
  2. 其他 HTTP 请求由服务和
  3. 它们反对开发服务器,而不是从当前版本调用代码;
  4. 如果我的测试使用的代码通过开发人员尚未拥有的新端点与另一个项目通信,它将失败。

我是如何想到测试这个的

我的想法是使用单个测试项目,该项目将使用 @SpringBootTest 和 mockmvc 运行所有必需的项目来模拟真实调用并在测试中传输它们,而不是使用真实的端点。

  1. 我不知道如何使 Spring 与 @Autowired 一起工作并运行 6 不同的WebApplicationContext。
  2. 或者也许我应该忘记我的计划并使用不同的东西。

当涉及到@SpringBootTest时,它应该加载加载一个弹簧引导驱动应用程序所需的所有内容。

因此,Spring Boot 测试文档中提到的"集成测试"是针对一个特定的应用程序。

现在,您正在谈论 6 个已经存在的应用程序。如果这些应用程序都是 Spring 引导驱动的,那么您可以为每个应用程序运行@SpringBootTest,并模拟您不需要的所有内容。MockMvc您提到了 BTW,它不会启动整个应用程序,而是启动与 Web 请求处理相关的应用程序的"部分"(例如,它不会加载您的 DAO 层(,所以它是完全不同的事情,不要混淆它们:)

如果您不想测试涉及所有 6 个服务的整个流程,则必须运行整个环境并运行将在远程 JVM 上执行的成熟系统测试。 在这种情况下,您可以容器化应用程序并使用 TestContainers 在测试中运行它们。

显然,您还必须为数据库(如果有(提供容器,消息传递系统等。

总而言之,我觉得这个问题相当模糊,缺乏具体的细节。