Cucumber: многомодульный проект(Spring, Gradle). Не распознаются степы.

Многомодульный фреймворк:

  • отдельный core.jar под кор-функциональность (работа с вебдрайвером, всяческий конфиг),
  • отдельный steps.jar под, собственно, степы.

Вызываю gradle task, отвечающий за запуск тестов, получаю missing implementation:

$ gradle cucumber
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar UP-TO-DATE
:assemble UP-TO-DATE
:compileTestJava
:cucumber
@Integration
Feature: Integration

  @api
  Scenario: API test # integration.feature:12
    Given API step1
    And API step2

1 Scenarios (1 undefined)
2 Steps (2 undefined)
0m0.000s


You can implement missing steps with the snippets below:

@Given("^API step(\\d+)$")
public void api_step(int arg1) throws Throwable {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

BUILD SUCCESSFUL in 2s
5 actionable tasks: 2 executed, 3 up-to-date

Настройки Cucumber раннера:

@RunWith(Cucumber.class)
@CucumberOptions(features = "src/test/resources/features"
		, glue = "com.dkat.atf.core.steps"
		, plugin={"pretty", "html:target/cucumber-html-report", "json:target/cucumber-json-report/report.json"}
		, tags={"@api"})

В не разбитом на отдельные .jar файлы проект запускает тесты, распознаёт степы и успешно выполняет тесты.
Подозревать что-то конкретное не могу, потому как технологии для меня новые – Gradle, Spring (использую для сохранения контекста тестов между степами).

С чего бы начать, на что обратить внимание? : )

Так сразу не скажу, но сдаётся мне что glue = “com.dkat.atf.core.steps” не канает, если степы зашиты в jar. Или может надо добавить steps.jar в classpath

1 лайк

Показали бы свой build.gradle, для начала. А именно часть, отвечающую за многомодульность. Пока что выглядит так, как будто степы не лежат в класспасе.

Wild guess: модуль со степами не добавлен в депенденси модуля с раннером. Если не помогло, то нужно build.gradle курить.

1 лайк

Спасибо, думаю, всё так и есть (classpath, зависимости) – почитаю ещё про gradle и попытаюсь реализовать с несколько другой архитектурой, уже более осмысленно и с меньшим количеством копипасты.