У нас есть приложение Spring Boot, и мы хотим запустить из этого приложения функцию Cucumber.Всякий раз, когда пользователь нажимает кнопку в приложении Spring, вызов поступает в классе (CucumberTestService
), где мы начинаем выполнение нашей функции Cucumber.
Вот структура интересующего исходного кодадля нас:
- src
-main
-com
-bino
-panel
-server
-reference
-cucumber
-steps
-SendMessagesDefs.java
-CucumberTestService.java
Мы подготавливаем аргументы в CucumberTestService
:
String[] args = new String[]{
"--strict",
"--glue",
"com.bino.panel.server.reference.cucumber.steps",
"--plugin",
"pretty",
"/CUCUMBER-FEATS/" + feature + ".feature",
"--plugin",
"json:" + reports_path + "/cucumber-reports-" + feature + "/Cucumber.json",
"--plugin",
"junit:" + reports_path + "/cucumber-reports-" + feature + "/Cucumber.xml",
"--plugin",
"html:" + reports_path + "/cucumber-reports-" + feature,
"--plugin",
"usage:" + reports_path + "/cucumber-reports-" + feature + "/cucumber-usage.json",
"--plugin",
"pretty:" + reports_path + "/cucumber-reports-" + feature + "/cucumber-pretty.txt"
};
, затем мы пытаемся запустить его следующим образом - точно так же, как он запускается в cucumber.api.cli.Main
:
run(args, Thread.currentThread().getContextClassLoader());
Теперь это работает довольно хорошо в нашей IDE (Eclipse & IntelliJ), однако, когда мы упаковываем это в загрузочную банку с пружиной, она перестает работать.
Для развертывания всеприложение упаковано в один jar-файл и имеет следующую структуру:
- BOOT-INF
-classes
-com
-bino
-panel
-server
-reference
-cucumber
-steps
-lib
- META-INF
MANIFEST.ML
- org
-springframework
-boot
-loader
При попытке его запустить Cucumber, похоже, не может найти реализацию, определенную в параметре glue:
1 Scenarios (1 undefined)
7 Steps (7 undefined)
0m0.000s
Мы потратили довольно много времени, чтобы исследовать эту проблему, и пришли к выводу, что Огурец не может найти классы с этого пути "com.bino.panel.server.reference.cucumber.steps"
при его выполнении для этого.м. Весенний бут.Но они обнаруживаются правильно, когда один и тот же код выполняется из IDE (Eclipse, IntelliJ).
Любое предложение о том, как мы можем "помочь" Cucumber & Spring найти классы клея в банке с пружинной загрузкой?
Jar Используемые версии (взятые из нашего build.gradle
файла):
- compile group: 'io.cucumber', name: 'gherkin', version: '6.0.14'
- compile(group: 'info.cukes', name: 'cucumber-java8', version: '1.2.5')
- compile(group: 'io.cucumber', name: 'cucumber-junit', version: '4.2.6')
- compile(group: 'io.cucumber', name: 'cucumber-picocontainer', version: '2.4.0')
Версия Spring Boot 2.1.3
Любая помощь / предложение / идеи высоко ценятся!Большое спасибо!