如何从不同的主要方法调用 Cucumber runner class
How to invoke the Cucumber runner class from a different main method
我是命令行界面的新手。所以我只是有一个关于如何使用 CLI 技术调用黄瓜的 runner class 的问题。
我有一个 Java 程序,其中包含一个 main 方法。当测试人员传递测试用例参数时,它将获取功能文件。 java 程序调用一个自定义的 API,它将获取正确的特征文件。
接下来,我必须调用 Cucumber runner class 来执行测试用例。我需要将这个特定的功能文件作为参数传递。两个问题,我们可以从不同的 main 方法调用 runner class 吗?我做了一些研究,但找不到具体的答案。
两个问题,
cucumber.api.cli.Main.main(参数);那么我如何指定我的 runner class 的 jar 位置。
`FeatureFileCreation.main("xxxxx"); - API 获取正确的特征文件
字符串 [] 参数 = {"-", ""};
cucumber.api.cli.Main.main(参数);
- 如何指定我的 jar 所在的位置?如何传递我的功能文件?`
我应该在运行器中创建一个 main 方法 class,像这样吗?为了使用 CLI,因为我需要创建一个可运行的 jar。我的 runner class 中应该有一个 main 方法。
`
@RunWith(Cucumber.class)
@Cucumber.Options(features="C:/Users/IBM_ADMIN/Desktop/CRAutomation/CR Regression1/src/My.feature",glue={"bell.canada.step.definition"})
public class AutomationRunnerAction {
public void main(){
}
}`
请注意,获取正确的特征文件是 1 java API。我将从一个 java 程序的一个主要方法中调用 API。具有步骤定义和方法的运行程序 class 是一个 diff java 程序。
如果可行,试试这个。您不需要任何 Runner class
。只需从 cli.
中调用对应于 运行 cucumber 的 Main class
的静态 main 方法即可
public static void main(String[] args) throws Throwable {
//Your code to get feature file full path
Main.main(new String[]{"-g", "classpath to step definition file", "Full path to feature file"});
// My stepdefinition is inside java package at cucumber.sample.test
// My feature file is inside src/test/resources/features/samplethree.feature
}
对于标签或插件等其他参数,请使用 "-t","@Tags"
。 重要功能文件路径必须是最后一个选项。
我是运行 Eclipse,Maven 设置了类路径和 jar 依赖项。
很遗憾,接受的答案不正确。如果您查看 Main.main()
的 source,您会注意到它包含: System.exit(exitstatus)
终止系统。
以编程方式 运行 命令行的正确方法是像这样使用 Main.run()
:
String [] argv = new String[]{ "-g","","./src/main/java/featureDetails/Testing.feature"};
ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
byte exitstatus = Main.run(argv, contextClassLoader);
我是命令行界面的新手。所以我只是有一个关于如何使用 CLI 技术调用黄瓜的 runner class 的问题。
我有一个 Java 程序,其中包含一个 main 方法。当测试人员传递测试用例参数时,它将获取功能文件。 java 程序调用一个自定义的 API,它将获取正确的特征文件。
接下来,我必须调用 Cucumber runner class 来执行测试用例。我需要将这个特定的功能文件作为参数传递。两个问题,我们可以从不同的 main 方法调用 runner class 吗?我做了一些研究,但找不到具体的答案。 两个问题,
cucumber.api.cli.Main.main(参数);那么我如何指定我的 runner class 的 jar 位置。
`FeatureFileCreation.main("xxxxx"); - API 获取正确的特征文件 字符串 [] 参数 = {"-", ""}; cucumber.api.cli.Main.main(参数);
- 如何指定我的 jar 所在的位置?如何传递我的功能文件?`
我应该在运行器中创建一个 main 方法 class,像这样吗?为了使用 CLI,因为我需要创建一个可运行的 jar。我的 runner class 中应该有一个 main 方法。
`
@RunWith(Cucumber.class)
@Cucumber.Options(features="C:/Users/IBM_ADMIN/Desktop/CRAutomation/CR Regression1/src/My.feature",glue={"bell.canada.step.definition"})
public class AutomationRunnerAction {
public void main(){
}
}`
请注意,获取正确的特征文件是 1 java API。我将从一个 java 程序的一个主要方法中调用 API。具有步骤定义和方法的运行程序 class 是一个 diff java 程序。
如果可行,试试这个。您不需要任何 Runner class
。只需从 cli.
Main class
的静态 main 方法即可
public static void main(String[] args) throws Throwable {
//Your code to get feature file full path
Main.main(new String[]{"-g", "classpath to step definition file", "Full path to feature file"});
// My stepdefinition is inside java package at cucumber.sample.test
// My feature file is inside src/test/resources/features/samplethree.feature
}
对于标签或插件等其他参数,请使用 "-t","@Tags"
。 重要功能文件路径必须是最后一个选项。
我是运行 Eclipse,Maven 设置了类路径和 jar 依赖项。
很遗憾,接受的答案不正确。如果您查看 Main.main()
的 source,您会注意到它包含: System.exit(exitstatus)
终止系统。
以编程方式 运行 命令行的正确方法是像这样使用 Main.run()
:
String [] argv = new String[]{ "-g","","./src/main/java/featureDetails/Testing.feature"};
ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
byte exitstatus = Main.run(argv, contextClassLoader);