首页 > 解决方案 > 有没有办法将空手道测试作为集成测试套件针对预启动的 Spring Boot 服务器运行?

问题描述

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

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

  1. 它在这里说:“surefire插件没有硬编码到空手道中” 有没有办法在maven的集成测试阶段运行空手道测试?

  2. 在 maven-failsafe-plugin 的上下文中运行空手道测试根本不起作用。在下面我的测试项目 url 上很容易重现。首要的两个问题:

    1. 从 maven-failsafe 运行时,Karate 将生成 .txt 和 .html 文件,但不会生成 .json Cucumber 输出文件。
    2. 因此,您无法从 cucumber-reporting 插件(我需要)获得 HTML 报告
  3. 我创建了一个项目来展示这些事实: https ://github.com/djangofan/karate-api-sample

  4. 运行集成测试需要我在测试套件之前启动 Spring Boot,然后再停止 Spring Boot 服务器。Maven SureFire 没有此功能,但 maven 故障安全插件有:maven 构建助手插件有一个预集成测试钩子。仅受 Maven surefire 限制,我不走运。

  5. 我在 karate/karate-demo 项目中看到了一个从代码启动 spring boot 服务器的示例。当我尝试测试已经建立的 Web 服务时,这并不容易实现。这是我唯一的选择:将surefire与类过滤器和代码一起使用来引导?

  6. 如果没有好的答案,我将恢复使用cucumber-java+ resteasy,我很确定它可以与 maven failsafe 一起使用: https ://maven.apache.org/surefire/maven-failsafe-plugin/examples/cucumber.html

标签: karatespring-boot-test

解决方案


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

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

抱歉,无法复制。

对于故障安全,只需使用命名约定即可,例如**/IT*.java

Maven SureFire 没有此功能,但 maven 故障安全插件有:

因此,如上所述使用故障保护。如果您无法做到这一点,请更改您的项目以证明问题,我们承诺会修复它。另请参阅这些说明:https ://github.com/intuit/karate/wiki/How-to-Submit-an-Issue

如果没有好的答案,我将恢复使用 cucumber-java + resteasy

那当然是你的选择。至少在我(有偏见的 :) 意见中,您会错过空手道添加的所有 JSON 断言值,以及并行执行 + 报告聚合。我相信您会尽可能提供帮助,以便我们可以为所有需要此解决方案的人提供更好的体验 - 但除此之外,嘿 - 不用担心:P


推荐阅读