我是使用命令行界面的新手。所以我只是有一个关于如何使用 CLI 技术调用 Cucumber 的 runner 类的问题。
我有一个 Java 程序,其中包含一个 main 方法。当测试人员传递测试用例参数时,它将获取功能文件。 java 程序调用一个定制的 API,它将获取正确的功能文件。
接下来,我必须调用 Cucumber 运行程序类来执行测试用例。我需要传递这个特定的功能文件作为参数。有两个问题,我们可以从不同的 main 方法调用 runner 类吗?我做了一些研究,但无法找到具体的答案。
两个问题,
-
黄瓜.api.cli.Main.main(参数);那么我如何指定我的跑步者类的 jar 位置。
`FeatureFileCreation.main("xxxxx"); - 获取正确特征文件的API
String[] 参数 = {"-", ""};
黄瓜.api.cli.Main.main(参数);
- 如何指定我的 jar 所在的位置?我如何传递我的功能文件?
我应该在 runner 类中创建一个像这样的 main 方法吗?为了使用 CLI,因为我需要创建一个可运行的 jar。我的跑步者类中应该有一个主要方法。
`
@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。具有步骤定义和方法的运行器类是一个 diff java 程序。
不幸的是接受的答案不正确。如果你看一下source of Main.main()
你会注意到它包含: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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)