【发布时间】:2020-12-07 21:25:18
【问题描述】:
我正在尝试利用空手道 (https://github.com/intuit/karate) 作为测试容器化、基于云的微服务的整体测试策略中的关键组件。假设被测微服务和空手道都有自己的容器,流程如下:
- 获取每个容器以进行本地部署
- 在空手道容器中构建(通过 gradle)组件(假设我们的 mock 需要 Java 类)
- 部署(通过 gradle)模拟并让它们在独立模式下运行
- 将有关 mock 的信息注入到微服务的 YAML 中
- 在本地构建和部署微服务
- 通过 CLI 运行空手道测试(传递有关模拟和/或环境的信息)
我的第一个问题是这是一个好主意(TM) 还是坏主意(TM)。从表面上看,这似乎既合理又可以实现,但我想知道我是否正在尝试以一种从未打算使用的方式使用空手道。我玩弄了将所有空手道内容(包括模拟服务器)保留在测试本身中的想法,但是步骤#3-5 必须将模拟信息注入微服务,然后运行命令来构建和部署微服务都在测试套件中,在我看来这是一个 Bad Idea(TM)。最好将其作为 Jenkins 工作中管道的一部分来执行,对吗?
我的第二个问题是如何最好地导出模拟、文件和 Java 依赖项以供外部使用(以支持步骤编号 2-3),例如这里是文件结构:
.
+-- build.gradle
+-- src
| +-- main
| +-- java
| +-- JWTSigner
| +-- PEMHelper
| +-- resources
| +-- private-key.pem
| +-- public-key.pem
+-- test
| +-- main
| +-- java
| +-- api
| +-- cats
| +-- cats.feature
| +-- dogs
| +-- dogs.feature
| +-- AllTestsRunner.java
| +-- mocks
| +-- mock-auth.feature
| +-- templates
| +-- public-key.json
| +-- resources
| +-- lolcats.pdf
| +-- loldawg.jpg
所以在这里,mock-auth.feature 需要 src/main 和 src/test/templates 中的内容。我已经能够玩 gradle 任务并将所需的东西复制到具有独立空手道 JAR 的主目录的子目录中,以便可以启动模拟,但我想知道是否有更好的方法......
感谢任何反馈,但如果是否定的,请建议我尝试的替代方法。谢谢。
【问题讨论】:
标签: mocking karate web-api-testing