Java 通过在SpringBoot中调用REST端点来启动IntegrationTest

Java 通过在SpringBoot中调用REST端点来启动IntegrationTest,java,spring-boot,testing,microservices,integration-testing,Java,Spring Boot,Testing,Microservices,Integration Testing,我假设这是可能的,并且不违反标准/不良做法 我们正在SpringBoot@SpringBootTest中为微服务编写端到端测试,并且该端到端测试位于单独的模块/项目中(如微服务) 计划是编写一个带有端点的控制器,并将配置文件作为参数,以编程方式运行测试@SpringBootTest 问题: 我们如何以上面指定的方式运行测试 我们是否应该将测试保留在src/test中而不是src/main,因为在端到端spring引导应用程序中,它所拥有的只是一个测试类(@springbootest)和一些辅助类

我假设这是可能的,并且不违反标准/不良做法

我们正在SpringBoot
@SpringBootTest
中为微服务编写端到端测试,并且该端到端测试位于单独的模块/项目中(如微服务)

计划是编写一个带有端点的控制器,并将配置文件作为参数,以编程方式运行测试
@SpringBootTest

问题:

  • 我们如何以上面指定的方式运行测试
  • 我们是否应该将测试保留在
    src/test
    中而不是
    src/main
    ,因为在端到端spring引导应用程序中,它所拥有的只是一个测试类(
    @springbootest
    )和一些辅助类
  • 有没有其他更好的方式/方法/标准来组织
  • 问题#1:请参见下面的示例测试

    问题#2:最佳实践是将测试保存在src/test中

    问题3:不,我想你可以走了

    TestRestTemplate与WebTestClient的对比

    注:从5.0开始,该等级处于维护模式,只有轻微故障 变更请求和错误将被接受。请 考虑使用Or.SrpFrrgWorks.Web.ReaCyv.clit.WebCclipse。 它具有更现代的API,支持同步、异步和流式传输 情景

    创建多模块项目:

    请注意,
    WebTestClient

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
            <scope>test</scope>
        </dependency>
    
    
    org.springframework.boot
    弹簧启动器webflux
    测试
    
    问题1:请参见下面的示例测试

    问题#2:最佳实践是将测试保存在src/test中

    问题3:不,我想你可以走了

    TestRestTemplate与WebTestClient的对比

    注:从5.0开始,该等级处于维护模式,只有轻微故障 变更请求和错误将被接受。请 考虑使用Or.SrpFrrgWorks.Web.ReaCyv.clit.WebCclipse。 它具有更现代的API,支持同步、异步和流式传输 情景

    创建多模块项目:

    请注意,
    WebTestClient

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
            <scope>test</scope>
        </dependency>
    
    
    org.springframework.boot
    弹簧启动器webflux
    测试
    
    一般来说,我更喜欢黄瓜测试溶液进行端到端测试

    因此,请用Cucumber的方式回答您的问题:

  • 这是关于如何实现和触发测试的
  • 创建一个单独的模块,如果我们想重用步骤定义,请将步骤移动到单独的项目中
  • 我认为黄瓜作为端到端测试是一个更好的解决方案
  • 更多详细信息:

    我们可以创建一个单独的项目来定义可重用的步骤,然后在API项目中创建一个单独的模块来存储特性,并添加步骤定义项目作为依赖项

    我们从cucumber解决方案中得到的好处是,小黄瓜的语法非常简单,使得测试的编写和维护非常高效,甚至我们的BA在阅读了几个示例后也可以编写测试。我们对目前为止的表现非常满意

    以下列表是我们用于cucumber steps定义项目的依赖项:

    • 黄瓜:黄瓜爪哇
    • cucumber:cucumber junit(使用junit触发特性)
    • Cumber:Cumber-spring(因此我们可以使用spring上下文,例如ContextConfiguration)
    • jsonpath:json路径(可以方便地访问所需的特定结果)

    一般来说,我更喜欢黄瓜测试溶液进行端到端测试

    因此,请用Cucumber的方式回答您的问题:

  • 这是关于如何实现和触发测试的
  • 创建一个单独的模块,如果我们想重用步骤定义,请将步骤移动到单独的项目中
  • 我认为黄瓜作为端到端测试是一个更好的解决方案
  • 更多详细信息:

    我们可以创建一个单独的项目来定义可重用的步骤,然后在API项目中创建一个单独的模块来存储特性,并添加步骤定义项目作为依赖项

    我们从cucumber解决方案中得到的好处是,小黄瓜的语法非常简单,使得测试的编写和维护非常高效,甚至我们的BA在阅读了几个示例后也可以编写测试。我们对目前为止的表现非常满意

    以下列表是我们用于cucumber steps定义项目的依赖项:

    • 黄瓜:黄瓜爪哇
    • cucumber:cucumber junit(使用junit触发特性)
    • Cumber:Cumber-spring(因此我们可以使用spring上下文,例如ContextConfiguration)
    • jsonpath:json路径(可以方便地访问所需的特定结果)

    为什么?你想达到什么目标?为什么呢?您想要实现什么?尽管我喜欢Cumber测试,但团队使用它的技能/舒适度不够。尽管我喜欢Cumber测试,但团队使用它的技能/舒适度不够。上面的示例是如何测试控制器/调用控制器端点。但我希望能够从控制器开始测试。然而,tests@SpringBootTest类位于
    /src/test
    中。上面的示例是如何测试控制器/调用控制器端点。但我希望能够从控制器开始测试。然而,tests@SpringBootTest类位于
    /src/test