Как изменить путь glue
для проекта Gradle+Cucumber?
Это соответствующая часть файла build.gradle
:
task cucumber() {
dependsOn assemble, compileTestJava
doLast{
javaexec {
main = "cucumber.api.cli.Main"
classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
args = ['--plugin', 'pretty', '--glue', 'gradle.cucumber', 'src/main/java/features']
}
}
}
Когда я запускаю >gradle cucumber
из командной строки, я получаю уведомление, что сценарии не определены, потому что файл клея находится не в папке /main
, а в /main/java/stepmethods
.
Как мне сказать об этом Gradle?
Я знаю. Вот что я хочу изменить. Как я могу это сделать?
Допустим, у вас есть проект под названием acmetesting. Структура вашего проекта может выглядеть так:
acmetesting
|
+---src/main/java
|
+---com.acme.testing
|
+---steps
|
+---cucumberjvm302testbed
|
+---Cucumber302TestBedSteps.java
Файл Cucumber302TestBedSteps.java — это ваш файл определений шагов, и в приведенной выше конфигурации он будет начинаться так:
package com.acme.testing.steps.cucumberjvm302testbed;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
import io.cucumber.datatable.DataTable;
import io.cucumber.datatable.DataTable.TableConverter;
import io.cucumber.datatable.DataTableType;
import io.cucumber.datatable.DataTableTypeRegistry;
import io.cucumber.datatable.DataTableTypeRegistryTableConverter;
import io.cucumber.datatable.TableEntryTransformer;
import static org.junit.Assert.assertEquals;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
ooo
Таким образом, ваша строка аргументов будет выглядеть так:
args = ['--plugin', 'pretty', '--glue', 'com.acme.testing.steps', 'src/main/java/features']
РЕДАКТИРОВАТЬ Я убрал огурецjvm302testbed из значения клея, чтобы повысить гибкость при добавлении других папок к шагам.
Вот и все. Мне просто нужно было заменить gradle.cucumber
(который я откуда-то скопировал) моим фактическим пакетом определения шага.
Является ли gradle.cucumber именем вашего пакета? --glue должен указывать на имя пакета ваших шагов.