有什么好方法可以让空手道测试在Maven构建的"集成测试"阶段测试Spring-Boot微服务? 我的意思是:是否有一种反模式/解决方法效果很好,或者我运气不好,因为这是空手道发展的事后想法?
到目前为止,我收集的事实:
-
它在这里说:"万无一失的插件没有硬编码到空手道中" 有没有办法在 maven 的集成测试阶段运行空手道测试?
-
在 maven-failsafe-plugin 的上下文中运行空手道测试根本不起作用。 易于在下面的测试项目 url 上重现。 首先有两个问题:
- 从 maven-failsafe 运行时,空手道将生成.txt和.html文件,但不生成 .json Cucumber 输出文件。
- 因此,您无法从黄瓜报告插件(我需要(获得 HTML 报告。
-
我创建了一个项目来演示这些事实:https://github.com/djangofan/karate-api-sample
-
运行集成测试要求我在测试套件之前启动 Spring 引导,然后在之后停止 Spring 引导服务器。 Maven SureFire 没有此功能,但 maven 故障安全插件具有:Maven 构建助手插件有一个预集成测试钩子。 仅受Maven万无一失的限制,我就不走运了。
我在空手道 /空手道演示项目中看到了一个从代码启动 Spring 启动服务器的示例。 当我尝试测试已经建立的 Web 服务时,这并不容易实现。 这是我唯一的选择:将 surefire 与类过滤器和代码一起使用来引导吗?
鉴于没有好的答案,我将恢复使用
cucumber-java
+resteasy
,我很确定它将与 maven 故障保护一起使用:https://maven.apache.org/surefire/maven-failsafe-plugin/examples/cucumber.html
首先,这不是Karate.js
不确定这是从哪里来的:)
从 maven-failsafe 运行时,空手道将生成.txt和.html文件,但不生成 .json Cucumber 输出文件。
抱歉,无法复制。
对于故障安全,只需使用命名约定即可,例如**/IT*.java
Maven SureFire没有此功能,但Maven故障安全插件具有:
因此,如上所述使用故障保护。如果您无法做到这一点,请更改您的项目以演示问题,我们承诺会修复它。 另请参阅以下说明:https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue
鉴于没有好的答案,我将恢复使用黄瓜-java + resteasy
这当然是你的选择。至少在我的(有偏见的:)意见 您将错过空手道添加的所有 JSON 断言值,以及报告的并行执行 + 聚合。我相信您会尽可能地提供帮助,以便我们可以为所有需要此解决方案的人提供更好的体验 - 但除此之外,嘿 - 不用担心:P