当前位置: 首页 > 面试题库 >

使用外部库Spring Framework通过模拟执行Karate jar

鲁品
2023-03-14
问题内容

早上好。我正在使用空手道独立版的项目中工作。我是空手道的新手,请原谅我缺乏知识。

独立的空手道罐子是使用’ -m ‘命令行参数执行的,以启动模拟。功能。mock.feature引用基于
org.springframework.amqp 构建的utils类。

问题是由于外部库’ org / springframework / amqp / rabbit / connection /
ConnectionFactory
‘ ,karate.jar启动失败,并出现命令行执行异常

api1_mock_test.feature

Feature: API1 Mock Test

Background:
* def RabbitUtils = Java.type('utils.RabbitUtils')
.
.

我们的RabbitUtils只是一个Java类,它导入了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第一性原理,而不使用该-jar选项。空手道命令行应用程序(或CLI)类恰好是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.jarsikulixapi.jar在命令行的同一文件夹中,此方法有效(对于Windows,使用;而不是:用作“路径分隔符”):

java -cp karate.jar:sikulixapi.jar com.intuit.karate.Main test.feature

对于那些希望为Visual Studio Code“ Karate
Runner”扩展名自定义类路径的用户,请参考:https :
//github.com/intuit/karate/wiki/Karate-Robot-Windows-Install-Guide#change-
command-线设置



 类似资料:
  • 问题内容: 我一直在尝试将jar转换为exe。该程序-jar-使用蓝牙库“ Bluecove”,它是某个目录中的另一个jar。该程序还通常使用Java Swing 和东西。从Netbeans或Eclipse中运行时,该程序可以完美运行。现在是我部署它的时候了,因此我需要将其转换为exe。但是我一直无法获得最终的可执行文件来链接“ Bluecove”。我尝试了JSmooth和Launch4j,但是使

  • 早上好我正在做一个使用空手道的项目。我对空手道完全陌生,可以原谅我在这里缺乏知识。 使用-m命令行参数执行独立空手道jar以启动mock.feature.mock.feature引用基于org.springframework.amqp构建的utils类。 问题是空手道。由于外部库“org/springframework/amqp/rabbit/connection/ConnectionFactor

  • 问题内容: 我有一个外部程序Otter,该程序将一些文件名作为参数并创建了一个输出文件,也将其指定为参数。因此,例如,如果我的输入是“ proof.in”,并且我希望将输出放置在“ proof.out”文件中,则可以在终端中运行以下命令: “ proof.in”文件必须与水獭可执行文件位于同一文件中。 问题是我需要Java提供此功能,因此在我的Java代码中执行以下操作: 但是在此行之后,整个用户

  • 问题内容: 我有一个外部程序Otter,该程序将一些文件名作为参数并创建了一个输出文件,也将其指定为参数。因此,例如,如果我的输入是“ proof.in”,并且我希望将输出放置在“ proof.out”文件中,则可以在终端中运行以下命令: “ proof.in”文件必须与水獭可执行文件位于同一文件中。 问题是我需要Java提供此功能,因此在我的Java代码中执行以下操作: 但是在此行之后,整个用户

  • 外部化相对于序列化的主要优点是外部化仅保留对象的一部分,而不是序列化时保留整个对象。但我认为,如果我们不调用可序列化类的 writeObject() 方法中的 ObjectOutputStream 的 defaultWriteObject() 方法,我们可以通过自定义序列化来模拟外部化。因此,无需调用 defaultWriteObject() 方法,只在 writeObject() 方法中保留可序

  • No alarms and no surprises. — Radiohead 我讨厌惊喜。有时你的 Puppet 配置清单没有像你预期的那样执行, 或者在你不知情的情况下,或许别人又提交了改变。 不管哪种情况发生,在 Puppet 执行配置清单之前能精确地获知它将要执行些什么是非常必要的。 例如,若更新了一个生产服务的配置文件并重新启动该服务,很可能会导致非计划性的停机时间。 又如,有时人为的手