我试图利用空手道(https://github.com/intuit/karate)作为测试容器化、基于云的微服务的整体测试策略中的一个关键组件。假设被测微服务和空手道都有自己的容器,流程如下:
我的第一个问题是这是一个好主意还是一个坏主意。从表面上看,这似乎是合理的,也是可以实现的,但我想知道我是否在试图以一种从未被使用过的方式使用空手道。我考虑过在测试中保留所有空手道的东西(包括模拟服务器),但是步骤3-5必须将模拟信息注入微服务,然后运行命令以在测试套件中构建和部署微服务,在我看来这是个坏主意。最好把它作为詹金斯工作中管道的一部分,对吗?
我的第二个问题是如何最好地导出模拟、文件和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/tem板
中的内容。我已经能够玩gradle任务,并将所需的东西复制到主目录的子目录中,使用独立的空手道JAR来启动模拟,但我想知道是否有更好的方法...
任何反馈都是感激的,但如果是否定的,请建议我尝试的替代方案。非常感谢。
第二个问题的答案如下:https://stackoverflow.com/a/58339662/143475
在我看来,没有正确的方法™协调您的模拟和测试中的应用程序。你提出的方法会起作用,我要做的是在Docker中使用--Network
选项,例如,如果网络被称为moks
,你必须决定并可能公开一个端口号,例如8080,你设置第二个容器中的URL为超文本传输协议
您可以从空手道分布式测试指南的本页获得一些想法:https://github.com/intuit/karate/wiki/Distributed-Testing
请注意,空手道模拟被设计为只需要JRE和“fatjar”。这可以简化事情,例如,您甚至不需要“Dockerize”事情,只需在路径上使用
java
并指向您的*。功能
文件,您就完成了。即使使用Java代码,也可以将它们添加到类路径
,或者使用maven shade
自己构建一个“fatjar”。
正如您所说的,具有最少移动部件的选项可能是在同一个Java项目中建立模拟。优点是:
您可以动态选择端口并将其传递给主应用程序配置
进一步阅读:https://stackoverflow.com/a/61414022/143475
我正在使用空手道为Spring Boot应用程序进行集成测试。应用使用另外两个服务(服务A和服务B)。我已经为服务A和服务B编写了空手道模拟。我的集成测试是作为两个不同的功能文件编写的。其中一个特性是使用服务A和服务B的Mocks测试的。另一个特性使用服务B的Mocks和服务A的Spring契约存根。 仅具有模拟的功能 具有mock和Spring契约存根的特性 现在,当我们运行测试时,第二个失败了
我无法在我的功能中运行空手道测试 不知道我错过了什么。对于api自动化世界来说是非常新的。非常感谢任何帮助。
我无法使用CLI执行测试。跑者工作。我正在使用版本0.9.5.rc5和maven命令:“mvn test-f pom.xml exec:java-dexec.mainclass=com.intuit.karate.cli.main-dexec.args='-d'-dexec.classpathscope=test” 以下是错误:ERROR com.intuit.karate-driver conf
我正在使用空手道缺省的arche类型,正如在空手道教程中提到的,并且使用Eclipse成功地运行了cucumber报告的测试,但是当我在Jenkins中使用相同的项目时,我会得到以下错误。我正在使用Java1.8和Cucumber-reporting工具,请帮助我解决这个问题,因为我怀疑这是项目结构的问题 POM文件 `http://maven.apache.org/xsd/maven-4.0.0
我有一个框设置为在一个容器框内。这个集装箱箱还会有其他内容。 我正在尝试垂直居中内框内的文本。为此,我将与一起使用。 作为最后一步,我现在希望高度总是充满集装箱箱。以便此内框内垂直居中的文本始终垂直居中于容器框内。 > 容器框的高度会根据其内容进行调整,因此我无法在CSS中设置框的特定高度。 对于内框上的也没有帮助。 我怎样才能使这个内箱始终100%垂直地充满它的集装箱箱? 这里有一个示例代码段:
我95%的自动化框架是在空手道,工作得很好。我们需要检查应用程序日志中显示的中间结果的功能很少(不在Json响应中)。我写了一个外壳脚本,它在从邮递员手动发送请求后验证Linux机器上的应用程序日志。我使用eclipse的JSCH库调用这个脚本。 有没有什么方法可以让我从空手道发送请求,然后调用我的JSCH类进行验证,这样就可以避免手动发送请求的步骤? 谢谢,阿比