【发布时间】:2020-03-23 17:38:12
【问题描述】:
有没有什么好方法可以让空手道测试在 Maven 构建的“集成测试”阶段测试 Spring-Boot 微服务?我的意思是:是否有一种反模式/解决方法可以很好地工作,或者我运气不好,因为这是空手道开发的事后想法?
到目前为止我收集到的事实:
这里说:“surefire 插件没有硬编码到空手道中” Is there a way to run Karate test during maven's integration test phase?
-
在 maven-failsafe-plugin 的上下文中运行空手道测试根本不起作用。在下面我的测试项目 url 上很容易重现。最重要的两个问题:
- 从 maven-failsafe 运行时,Karate 将生成 .txt 和 .html 文件,但不会生成 .json Cucumber 输出文件。
- 因此,您无法从黄瓜报告插件(我需要)获得任何 HTML 报告
我创建了一个项目来展示这些事实:https://github.com/djangofan/karate-api-sample
运行集成测试需要我在测试套件之前启动 Spring Boot,然后再停止 Spring Boot 服务器。 Maven SureFire 没有此功能,但 maven 故障安全插件有:maven build helper 插件有一个 pre-integration-test 钩子。仅受 Maven surefire 限制,我运气不好。
我在 karate/karate-demo 项目中看到了一个从代码启动 Spring Boot 服务器的示例。当我尝试测试已经建立的 Web 服务时,这并不容易实现。这是我唯一的选择:将surefire与类过滤器和代码一起使用来引导?
如果没有好的答案,我将恢复使用
cucumber-java+resteasy,我很确定它可以与 maven 故障安全一起使用:https://maven.apache.org/surefire/maven-failsafe-plugin/examples/cucumber.html
【问题讨论】: