当从主要方法运行黄瓜时,给我提供了我的功能框架
When runing cucumber from main method giving me skeleton of my features
当 运行从主要 class 中对黄瓜进行测试 运行ner 时,按照下面的屏幕截图只是给了我功能的框架来定义步骤。而我已经编写了代码来实现这些步骤。
附上屏幕截图以了解我的代码以及项目结构。
Mainjarvish.java
是我尝试 运行 TestRunner.java
.
的主文件
失败是因为您的 class test/java/stepDefinitions/Contacts
与 src/main/java/MainJarvish
.
不在同一个 class 路径范围内
假设结构如下。
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
编译 classes
mvn clean compile test-compile
它生成 class
个文件
target/classes/MainJarvish.class
target/test-classes/stepDefinitions/Contacts.class
当你现在执行 ManJarvish
mvn exec:java -Dexec.mainClass=MainJarvish
class Contacts
不在 class 路径上,因此找不到步骤定义。
[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
下面的项目 class 被添加到 class 路径中。
如果 class Contacts
会在 class 路径上,例如通过更改 class 路径范围
mvn exec:java -Dexec.mainClass=MainJarvish -Dexec.classpathScope="test"
现在 target/classes
下方和 target/test-classes
下方的 class 已添加到 class 路径并找到步骤定义。
[INFO] --- exec-maven-plugin:1.6.0:java (default-cli)
submitMessageForExecution
...
1 Scenarios (1 passed)
1 Steps (1 passed)
根据您想要实现的目标,您可能会考虑将 MainJarvish
移动到 test/java
或创建测试 运行ner class.
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
输出
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running TestRunner
submitMessageForExecution
1 Scenarios (1 passed)
1 Steps (1 passed)
当 运行从主要 class 中对黄瓜进行测试 运行ner 时,按照下面的屏幕截图只是给了我功能的框架来定义步骤。而我已经编写了代码来实现这些步骤。
附上屏幕截图以了解我的代码以及项目结构。
Mainjarvish.java
是我尝试 运行 TestRunner.java
.
失败是因为您的 class 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
编译 classes
mvn clean compile test-compile
它生成 class
个文件
target/classes/MainJarvish.class
target/test-classes/stepDefinitions/Contacts.class
当你现在执行 ManJarvish
mvn exec:java -Dexec.mainClass=MainJarvish
class Contacts
不在 class 路径上,因此找不到步骤定义。
[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
下面的项目 class 被添加到 class 路径中。
如果 class Contacts
会在 class 路径上,例如通过更改 class 路径范围
mvn exec:java -Dexec.mainClass=MainJarvish -Dexec.classpathScope="test"
现在 target/classes
下方和 target/test-classes
下方的 class 已添加到 class 路径并找到步骤定义。
[INFO] --- exec-maven-plugin:1.6.0:java (default-cli)
submitMessageForExecution
...
1 Scenarios (1 passed)
1 Steps (1 passed)
根据您想要实现的目标,您可能会考虑将 MainJarvish
移动到 test/java
或创建测试 运行ner class.
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
输出
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running TestRunner
submitMessageForExecution
1 Scenarios (1 passed)
1 Steps (1 passed)