Запущенный из Spring Boot приложение Cucumber не находит классов клея в банке - PullRequest
2 голосов
/ 16 апреля 2019

У нас есть приложение 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

Любая помощь / предложение / идеи высоко ценятся!Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...