Karate 有没有一种方法可以将空手道测试作为一个集成测试套件,在预引导的spring引导服务器上运行?

Karate 有没有一种方法可以将空手道测试作为一个集成测试套件,在预引导的spring引导服务器上运行?,karate,spring-boot-test,Karate,Spring Boot Test,在Maven构建的“集成测试”阶段,有没有什么好办法让空手道测试来测试Spring Boot微服务?我的意思是:是否有一个反模式/变通方法可以很好地发挥作用,或者我运气不佳,因为这是空手道发展的一个事后想法 到目前为止,我收集的事实如下: 这里写着:“surefire插件没有硬编码到空手道中” 在maven failsafe插件的上下文中运行空手道测试根本不起作用。很容易在下面我的测试项目url上复制。最重要的两个问题: 从maven failsafe运行时,Karate将生成.txt和.ht

在Maven构建的“集成测试”阶段,有没有什么好办法让空手道测试来测试Spring Boot微服务?我的意思是:是否有一个反模式/变通方法可以很好地发挥作用,或者我运气不佳,因为这是空手道发展的一个事后想法

到目前为止,我收集的事实如下:

  • 这里写着:“surefire插件没有硬编码到空手道中”

  • 在maven failsafe插件的上下文中运行空手道测试根本不起作用。很容易在下面我的测试项目url上复制。最重要的两个问题:

  • 从maven failsafe运行时,Karate将生成.txt和.html文件,但不会生成.json输出文件
  • 因此,您无法从cucumber reporting插件(我需要)获得任何HTML报告
  • 我创建了一个项目来证明这些事实:

  • 运行集成测试需要在测试套件之前启动Spring引导,然后停止Spring引导服务器。Maven SureFire没有这个功能,但是Maven failsafe插件有:Maven build helper插件有一个预集成测试挂钩。仅受Maven surefire的限制,我运气不佳

  • 我在空手道/空手道演示项目中看到了一个从代码启动spring引导服务器的示例。当我尝试测试一个已经建立的web服务时,这并不容易实现。这是我唯一的选择:将surefire与类过滤器和引导代码一起使用吗

  • 如果没有很好的答案,我将恢复使用
    cucumberjava
    +
    resteasy
    ,我确信这将与maven failsafe一起工作:


  • 首先,这不是
    Karate.js
    不确定它来自哪里:)

    从maven failsafe运行时,Karate将生成.txt和.html文件,但不会生成.json输出文件

    抱歉,无法复制

    对于故障保护,只需使用命名约定即可,例如
    **/it*.java

    Maven SureFire不具备此功能,但Maven故障保护插件具有以下功能:

    因此,请使用上面提到的故障保护。如果您无法做到这一点,请更改您的项目以演示该问题,我们承诺将解决该问题。另请参阅以下说明:

    如果没有很好的答案,我将恢复使用CumberJava+resteasy


    这当然是你的选择。至少在我(有偏见的:)看来,你会的,并行执行+报告聚合。我相信您会尽可能地提供帮助,以便我们能够为所有需要此解决方案的人提供更好的体验-但是,嘿-不用担心:P

    好的,可以。我很惊讶你不能复制我已经创建的项目。您只需将pom.xml中的字符串“surefire”替换为“failsafe”,然后运行它,您就可以复制(至少部分复制)。我可以创建一个新项目,该项目可以复制到更详细的程度。@djangofan请确保您严格按照说明操作:我已经尝试过了。结果证明我做不到,这是Maven的局限,不是空手道。下面是我的测试项目来证明这一点:。感谢你引导我走上了一条似乎是正确的道路来发现这个局限性。使用Gradle可能会解决我的问题,但这不是我项目的一个选项。如果我使用空手道进行“分离的集成测试”,我需要一个单独的mvn测试模块。@djangofan非常感谢更新和链接,这将帮助其他人我最终实现了这一点,它大大减少了我在空手道测试中需要的样板代码量。基本上,我将Spring引导连接到DB和JMS,然后我的空手道测试将其用作实际系统的代理。这意味着我的空手道测试是100%的HTTP调用,没有任何导入的Java类。