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

用于集成测试的Java测试项目,java,spring-boot,integration-testing,Java,Spring Boot,Integration Testing,我必须使用一些旧的java应用程序。 共有6个项目,其中: 使用rest和mq以及 已经进行了一些集成测试 作为其中的一部分: mvcMock模拟用于来自测试的初始请求 其他http请求由服务和 他们反对开发服务器,而不是从当前构建中调用代码 如果我的测试使用的代码通过开发人员还没有的新端点与另一个项目通信,那么它将失败 我是如何想到测试这个的 我的想法是使用单一测试项目,该项目将使用@SpringBootTest和mockmvc运行所有必需的项目,以模拟真实调用,并在测试内部传输它们,而不

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

  • 使用rest和mq以及
  • 已经进行了一些集成测试
作为其中的一部分:

  • mvcMock模拟用于来自测试的初始请求
  • 其他http请求由服务和
  • 他们反对开发服务器,而不是从当前构建中调用代码
  • 如果我的测试使用的代码通过开发人员还没有的新端点与另一个项目通信,那么它将失败
  • 我是如何想到测试这个的

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

    提问

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

  • 当涉及到
    @SpringBootTest
    时,它应该加载加载单个spring引导驱动应用程序所需的所有内容

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

    现在,您讨论的是6个已经存在的应用程序。如果这些应用程序都是spring引导驱动的,那么您可以为它们中的每一个运行
    @SpringBootTest
    ,并模拟您不需要的一切<你提到的code>MockMvc不是启动整个应用程序,而是启动与web请求处理相关的应用程序的“部分”(例如,它不会加载DAO层),所以这是完全不同的事情,不要混淆它们:)

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

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


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

    问题是什么?我在这里看到的只是一堆格式很差的语句,而不是一个问题。使用TestContainers可能比我的计划更简单,如果第一个计划失败,使用类似的东西是我的第二个计划。我来自.net世界,通常会创建单个测试项目,包括所需的项目,并运行测试、设置配置,并使用测试客户端替换http客户端,该客户端不会运行真正的http请求,而是简化流程,并直接运行来自不同Web应用程序的代码,调试起来很容易,我看到整个堆栈都在跟踪action是如何工作的这6个应用的分发模型是什么?它们是可以部署到tomcat的战争吗?它们是带有嵌入式服务器的spring引导应用程序吗?还要考虑依赖关系,比如一个应用程序需要,比如说,版本x的spring,而另一个应用程序需要spring y。如果创建一个进程,LIB将发生冲突,这将导致不可预测的结果?