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

时间:2020-01-30 11:25:09

标签: java spring-boot integration-testing

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

  • 使用rest和mq和
  • 进行交流
  • 已经有一些集成测试。

为此,

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

我如何对此进行测试

我的想法是使用单个测试项目,该项目将使用@SpringBootTest和mockmvc运行所有必需的项目,以模拟真实调用并将其转移到测试中,而不是使用真实端点。

要求

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

1 个答案:

答案 0 :(得分:1)

对于@SpringBootTest,它应该加载加载单个Spring Boot驱动的应用程序所需的所有内容。

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

现在,您正在谈论6个已经存在的应用程序。如果这些应用程序都是由Spring Boot驱动的,则可以为每个应用程序运行@SpringBootTest,并模拟不需要的所有内容。您提到过BTW的MockMvc不会启动整个应用程序,而是启动与Web请求处理相关的应用程序的“一部分”(例如,它不会加载您的DAO层),因此完全不同的东西,不要在它们之间混淆:)

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

很显然,如果它们具有数据库,消息传递系统等,则还必须为数据库提供容器。

总的来说,我觉得这个问题比较模糊,缺乏具体细节。