使用外部库 Spring 框架通过 mock 执行空手道 jar
Executing Karate jar with mock using external library Spring Framework
早上好。我正在从事一个使用 Karate Standalone 的项目。我对空手道完全陌生,请原谅我在这里缺乏知识。
独立的 karate jar 是使用“-m”命令行参数执行的,以启动 mock.feature。 mock.feature 引用了一个基于“org.springframework.amqp”的实用程序 class。
问题是 karate.jar 启动失败,并由于外部库 'org/springframework/amqp/rabbit/connection/ConnectionFactory'
而出现命令行执行异常
api1_mock_test.feature
Feature: API1 Mock Test
Background:
* def RabbitUtils = Java.type('utils.RabbitUtils')
.
.
我们的 RabbitUtils 只是一个 java class,它导入 org.springframework.amqp 外部库以提供与 Rabbit AMQP 代理交互的功能,例如连接、接收、发布、清除等。在 IntelliJ 中构建和 运行 时一切正常。项目中的POM引用为:
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>2.1.5.RELEASE</version>
</dependency>
空手道独立 jar 是否有某种引用外部库的方法? classpath 参数设置为引用我们的工作区“.\target\test-classes”并包含 RabbitUtils.class 文件。
当前从工作区根执行的程序如下所示:
java -jar C:\intuit\karate-0.9.3.RC2.jar -cp .\target\test-classes -p 6868 -m .\src\test\java\mocks\api1_mock_test.feature
08:57:05.122 [main] INFO com.intuit.karate.Main - Karate version: 0.9.3.RC2
08:57:05.891 [main] ERROR com.intuit.karate - server-side background init failed - api1_mock_test.feature:4
Exception in thread "main" picocli.CommandLine$ExecutionException:
-unknown-:4 - org/springframework/amqp/rabbit/connection/ConnectionFactory
谢谢!
感谢您提出这个问题,我想我已经想出了一个方法来做到这一点,它开辟了很多很好的可能性。解决方案是使用 Java first-principles,而不是使用 -jar
选项。空手道 command-line-app(或 CLI)class 恰好是 com.intuit.karate.Main
。我将在这里提供一个使用 SikuliX 的演示。一、特征文件test.feature
:
Feature: sikuli test
Background:
* def Screen = Java.type('org.sikuli.script.Screen')
Scenario:
* def s = new Screen()
* def c = s.capture()
* c.getFile('.')
并且在命令行的同一文件夹中使用 karate.jar
和 sikulixapi.jar
,这有效(对于 windows,使用 ;
而不是 :
作为“路径分隔符”):
java -cp karate.jar:sikulixapi.jar com.intuit.karate.Main test.feature
对于那些希望为 Visual Studio 代码“空手道赛跑者”扩展自定义 class 路径的人,请参考:https://github.com/intuit/karate/wiki/Karate-Robot-Windows-Install-Guide#change-command-line-settings
另见:
早上好。我正在从事一个使用 Karate Standalone 的项目。我对空手道完全陌生,请原谅我在这里缺乏知识。
独立的 karate jar 是使用“-m”命令行参数执行的,以启动 mock.feature。 mock.feature 引用了一个基于“org.springframework.amqp”的实用程序 class。
问题是 karate.jar 启动失败,并由于外部库 'org/springframework/amqp/rabbit/connection/ConnectionFactory'
而出现命令行执行异常api1_mock_test.feature
Feature: API1 Mock Test
Background:
* def RabbitUtils = Java.type('utils.RabbitUtils')
.
.
我们的 RabbitUtils 只是一个 java class,它导入 org.springframework.amqp 外部库以提供与 Rabbit AMQP 代理交互的功能,例如连接、接收、发布、清除等。在 IntelliJ 中构建和 运行 时一切正常。项目中的POM引用为:
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>2.1.5.RELEASE</version>
</dependency>
空手道独立 jar 是否有某种引用外部库的方法? classpath 参数设置为引用我们的工作区“.\target\test-classes”并包含 RabbitUtils.class 文件。
当前从工作区根执行的程序如下所示:
java -jar C:\intuit\karate-0.9.3.RC2.jar -cp .\target\test-classes -p 6868 -m .\src\test\java\mocks\api1_mock_test.feature
08:57:05.122 [main] INFO com.intuit.karate.Main - Karate version: 0.9.3.RC2
08:57:05.891 [main] ERROR com.intuit.karate - server-side background init failed - api1_mock_test.feature:4
Exception in thread "main" picocli.CommandLine$ExecutionException:
-unknown-:4 - org/springframework/amqp/rabbit/connection/ConnectionFactory
谢谢!
感谢您提出这个问题,我想我已经想出了一个方法来做到这一点,它开辟了很多很好的可能性。解决方案是使用 Java first-principles,而不是使用 -jar
选项。空手道 command-line-app(或 CLI)class 恰好是 com.intuit.karate.Main
。我将在这里提供一个使用 SikuliX 的演示。一、特征文件test.feature
:
Feature: sikuli test
Background:
* def Screen = Java.type('org.sikuli.script.Screen')
Scenario:
* def s = new Screen()
* def c = s.capture()
* c.getFile('.')
并且在命令行的同一文件夹中使用 karate.jar
和 sikulixapi.jar
,这有效(对于 windows,使用 ;
而不是 :
作为“路径分隔符”):
java -cp karate.jar:sikulixapi.jar com.intuit.karate.Main test.feature
对于那些希望为 Visual Studio 代码“空手道赛跑者”扩展自定义 class 路径的人,请参考:https://github.com/intuit/karate/wiki/Karate-Robot-Windows-Install-Guide#change-command-line-settings
另见: