karate - 有没有办法将空手道测试作为集成测试套件针对预启动的 Spring Boot 服务器运行?
问题描述
有没有什么好方法可以让空手道测试在 Maven 构建的“集成测试”阶段测试 Spring-Boot 微服务?我的意思是:是否有一个反模式/解决方法运作良好,或者我运气不好,因为这是空手道发展的事后想法?
到目前为止我收集到的事实:
它在这里说:“surefire插件没有硬编码到空手道中” 有没有办法在maven的集成测试阶段运行空手道测试?
在 maven-failsafe-plugin 的上下文中运行空手道测试根本不起作用。在下面我的测试项目 url 上很容易重现。首要的两个问题:
- 从 maven-failsafe 运行时,Karate 将生成 .txt 和 .html 文件,但不会生成 .json Cucumber 输出文件。
- 因此,您无法从 cucumber-reporting 插件(我需要)获得 HTML 报告
我创建了一个项目来展示这些事实: https ://github.com/djangofan/karate-api-sample
运行集成测试需要我在测试套件之前启动 Spring Boot,然后再停止 Spring Boot 服务器。Maven SureFire 没有此功能,但 maven 故障安全插件有:maven 构建助手插件有一个预集成测试钩子。仅受 Maven surefire 限制,我不走运。
我在 karate/karate-demo 项目中看到了一个从代码启动 spring boot 服务器的示例。当我尝试测试已经建立的 Web 服务时,这并不容易实现。这是我唯一的选择:将surefire与类过滤器和代码一起使用来引导?
如果没有好的答案,我将恢复使用
cucumber-java
+resteasy
,我很确定它可以与 maven failsafe 一起使用: https ://maven.apache.org/surefire/maven-failsafe-plugin/examples/cucumber.html
解决方案
首先,这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
推荐阅读
- dagster - dagster solid 并行运行测试示例
- javascript - 如果然后起作用,我如何验证 Javascript 中的文本?
- node.js - 在 sqlite3(节点包)中,如何按顺序运行多个查询?
- python - 将下载的 Python 的路径添加到 Visual Studio Code
- python - 在 Windows 10 上运行软件时禁用通知
- python - 合并日期上具有不同值的多个数据框
- r - 有没有办法增加系统发育树中允许的物种数量以供我分析?
- bioconductor - clusterProfiler 无法加载包
- google-apps-script - 创建自定义函数以通过 App 脚本验证 Google 电子表格中的数据
- linker-errors - 链接错误 libbfd:在 RHEL8(64 位)上构建 32 位应用程序时