При запуске огурца из основного метода, давая мне скелет моих функций - PullRequest
0 голосов
/ 24 сентября 2018

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

Прикрепление скриншота, чтобы понять мой код, а также структуру проекта.Mainjarvish.java - это основной файл, из которого я пытаюсь запустить TestRunner.java.

main method

1 Ответ

0 голосов
/ 26 сентября 2018

Сбой, потому что ваш класс test/java/stepDefinitions/Contacts не находится в той же области пути к классу, что и src/main/java/MainJarvish.

Предполагается следующая структура.

src/main/java/MainJarvish.java
src/test/java/stepDefinitions/Contacts.java
src/test/java/FeatureList/Smoke.feature

MainJarvish.java

import cucumber.api.cli.Main;

public class MainJarvish {
    public static void main(String[] args) throws Exception {
        String[] options = {"--glue", "stepDefinitions",
            "src/test/java/FeatureList/Smoke.feature"};
        byte exitcode = Main.run(options, Thread.currentThread().getContextClassLoader());
        System.out.println("exitcode = " + exitcode);
    }
}

Contacts.java

package stepDefinitions;

import cucumber.api.java.en.Given;

public class Contacts {
    @Given("^Submit message for execution$")
    public void submitMessageForExecution() throws Throwable {
        System.out.println("submitMessageForExecution");
    }
}

Smoke.feature

Feature: example feature

  Scenario: describe the test scenario
    Given Submit message for execution

скомпилировать классы

mvn clean compile test-compile

генерирует class файлы

target/classes/MainJarvish.class
target/test-classes/stepDefinitions/Contacts.class

Когда вы сейчас выполняете ManJarvish

mvn exec:java -Dexec.mainClass=MainJarvish

, класс Contacts не находится напуть к классу и поэтому определение шага не найдено.

[INFO] --- exec-maven-plugin:1.6.0:java (default-cli)
...
Undefined scenarios:
src/test/java/FeatureList/Smoke.feature:3 # describe the test scenario

1 Scenarios (1 undefined)
1 Steps (1 undefined)

Поскольку MainJarvish находится в src/java, при его выполнении к пути к классу добавляются только классы проекта ниже target/classes.

Если класс Contacts будетбыть на пути к классам, например, путем изменения области действия пути к классам

mvn exec:java -Dexec.mainClass=MainJarvish -Dexec.classpathScope="test"

теперь классы ниже target/classes и ниже target/test-classes добавлены к пути к классу, и определение шага найдено.

[INFO] --- exec-maven-plugin:1.6.0:java (default-cli)
submitMessageForExecution
...    
1 Scenarios (1 passed)
1 Steps (1 passed)

В зависимости от того, чего вы хотите достичь, вы можете подумать о том, чтобы переместить MainJarvish в test/java или создать класс тестового бегуна.

src / test / java / TestRunner.java

import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;

@RunWith(Cucumber.class)
@CucumberOptions(
        glue = "stepDefinitions",
        features="src/test/java/FeatureList/Smoke.feature"
)
public class TestRunner {
}

, затем вы можете запустить тест функции как

mvn clean test

output

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running TestRunner
submitMessageForExecution

1 Scenarios (1 passed)
1 Steps (1 passed)
...