运行 cucumber怎么用jar?
How run cucumber using jar?
我有一个使用 Cucumber 和 Maven 的项目。
我可以 运行 从 Intellij IDEA 成功构建我的项目。
我可以 运行 从命令行使用以下项目:
mvn clean test -Dcucumber.options="src/test/resources/features --tags @TEST2"
现在我需要在另一台没有安装 IDEA 或 Cucumber 的机器上从命令行运行这个项目。我有一个想法,我需要从命令行创建一个 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,即运行s CucumberTest.java。我制作这个 class 是为了能够从命令行 运行。我想从命令行传递 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
求助!
- 为了测试 运行,我应该向 A 传递什么参数?
- 我需要使用标签作为参数。怎么做?
错误说 cucumber 没有看到 classes 的步骤定义。更改了 class,错误消失了
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"
- 包含 classes 和实现的包
步骤和挂钩
"--tags"
- 按标签进行 运行 测试的过滤器。这一行可以删除,值通过控制台传递:--tags @TEST2
"src/test/resources/features/"
- 最后一行没有像 "--keyword"
这样的前缀 - 是包含 .feature 文件的文件夹的路径。
该框架将在此文件夹和所有子文件夹中搜索文件。
我有一个使用 Cucumber 和 Maven 的项目。
我可以 运行 从 Intellij IDEA 成功构建我的项目。
我可以 运行 从命令行使用以下项目:
mvn clean test -Dcucumber.options="src/test/resources/features --tags @TEST2"
现在我需要在另一台没有安装 IDEA 或 Cucumber 的机器上从命令行运行这个项目。我有一个想法,我需要从命令行创建一个 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,即运行s CucumberTest.java。我制作这个 class 是为了能够从命令行 运行。我想从命令行传递 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
求助!
- 为了测试 运行,我应该向 A 传递什么参数?
- 我需要使用标签作为参数。怎么做?
错误说 cucumber 没有看到 classes 的步骤定义。更改了 class,错误消失了
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"
- 包含 classes 和实现的包 步骤和挂钩"--tags"
- 按标签进行 运行 测试的过滤器。这一行可以删除,值通过控制台传递:--tags @TEST2
"src/test/resources/features/"
- 最后一行没有像"--keyword"
这样的前缀 - 是包含 .feature 文件的文件夹的路径。 该框架将在此文件夹和所有子文件夹中搜索文件。