Как запустить огурец в банке?

У меня есть проект с огурцом и maven. Я могу успешно запустить и построить свой проект из Intellij IDEA. И я могу запустить проект из командной строки, используя: mvn clean test -Dcucumber.options="src/test/resources/features --tags @TEST2"

Теперь мне нужно запустить этот проект из командной строки на другом компьютере, на котором не установлены IDEA или огурец. У меня есть идея, что мне нужно создать jar-файл и запустить именно его из командной строки.

CucumberTest.java:

@RunWith(Cucumber.class)
@CucumberOptions(
        monochrome = true,
        glue = {"ru.ab.cd.stepDefs", "ru.abcd.tag.stepdefs"},
        features = {"src/test/resources/features/"},
        tags = {"@TEST1"},
        plugin = {"pretty", "html:target/cucumber-html-report"}
)

public class CucumberTest {
}

TestRunner.java, запускающий CucumberTest.java. Я создал этот класс специально для того, чтобы иметь возможность запускать из командной строки. Я хотел передать значение arguments из командной строки. Но я все еще не понимаю, какие значения следует передавать, и пытаюсь узнать, передав testArguments.

public class TestRunner{

    public static void main(String[] args) throws Throwable {
        String[] testArguments = {"/BitBucketProjects/abc/src/test/resources/features/smoke/TEST2.feature"};
        cucumber.api.cli.Main.main(testArguments);
    }
}

Результат при запуске TestRunner.java. Сам тест не запускался. Все шаги определены, если я запустил тот же тест через CucumberTest.java, все прошло успешно.

UUUUUUU

1 Scenarios (1 undefined)
7 Steps (7 undefined)
0m0,014s


You can implement missing steps with the snippets below:

@Допустим("^пользователь переходит на страницу авторизации$")
public void пользователь_переходит_на_страницу_авторизации() {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@Допустим("^пользователь находится на странице \"([^\"]*)\"$")
public void пользователь_находится_на_странице(String arg1) {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@Допустим("^пользователь загружает тестовые данные из json-файла$")
public void пользователь_загружает_тестовые_данные_из_json_файла() {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@Допустим("^пользователь авторизуется с ролью \"([^\"]*)\"$")
public void пользователь_авторизуется_с_ролью(String arg1) {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@Допустим("^ПРОВЕРКА\\. Ссылка \"([^\"]*)\" отображается на текущей странице$")
public void проверка_Ссылка_отображается_на_текущей_странице(String arg1) {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@Допустим("^ПРОВЕРКА\\. Таблица \"([^\"]*)\" отображается на текущей странице$")
public void проверка_Таблица_отображается_на_текущей_странице(String arg1) {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}


Process finished with exit code 0

Помощь!

  1. Какие параметры я должен передать A, чтобы тест запустился?
  2. Мне нужно использовать теги в качестве параметров. Как это сделать?

person NeverSleeps    schedule 05.02.2020    source источник


Ответы (1)


В ошибке сказано, что огурец не видит классов с определением шага. Поменял класс и ошибка исчезла

public class RunnerTest {
    private static String[] defaultOptions = {
            "--glue", "ru.ab.cd.stepDefs",
            "--glue", "ru.abcd.tag.stepdefs",
            "--tags", "@TEST2",
            "src/test/resources/features/"
    };

    public static void main(String[] args) throws Throwable {
        Stream<String> cucumberOptions = Stream.concat(Stream.of(defaultOptions), Stream.of(args));
        cucumber.api.cli.Main.main(cucumberOptions.toArray(String[]::new));
    }
}
  • "--glue" - пакет, содержащий классы с реализацией шагов и хуков
  • "--tags" - фильтр запуска тестов по тегам. Эту строку можно удалить и передать значение через консоль: --tags @TEST2

  • "src/test/resources/features/" - последняя строка без префикса типа "--keyword" - это путь к папке с файлами .feature. Фреймворк будет искать файлы в этой и во всех дочерних папках.

person NeverSleeps    schedule 05.02.2020