Выполнение jar карате с макетом с использованием внешней библиотеки Spring Framework - PullRequest
2 голосов
/ 05 июня 2019

Доброе утро.Я работаю над проектом, который использует автономное каратэ.Я совершенно новичок в каратэ, чтобы оправдать отсутствие здесь знаний.

Автономная банка каратэ выполняется с параметром командной строки ' -m ', чтобы запустить mock.feature.Mock.feature ссылается на класс utils, построенный на ' org.springframework.amqp '.

Проблема заключается в том, что при запуске 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-класс, который импортирует внешние библиотеки org.springframework.amqp для предоставления функций для взаимодействия с брокером Rabbit AMQP, например, для подключения, получения, публикации, очистки и т. д. При сборке и запуске в IntelliJ все работает нормально.Ссылка POM в проекте:

<dependency>
   <groupId>org.springframework.amqp</groupId>
   <artifactId>spring-rabbit</artifactId>
   <version>2.1.5.RELEASE</version>
</dependency>

Есть ли в автономном банке каратэ какой-то способ ссылки на внешние библиотеки?Параметр 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

Спасибо!

1 Ответ

3 голосов
/ 05 июня 2019

Спасибо, что спросили об этом, и я думаю, что я нашел способ сделать это, который открывает много больших возможностей. Решением является использование первых принципов 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()
* eval c.getFile('.')

И с karate.jar и sikulixapi.jar в одной и той же папке в командной строке это работает (для Windows используйте ; вместо : в качестве «разделителя пути»):

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