如何从不同的main方法调用Cucumber runner类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从不同的main方法调用Cucumber runner类相关的知识,希望对你有一定的参考价值。
我是新手使用命令行界面。所以我只想问一下如何使用CLI技术调用黄瓜的跑步者类。
我有一个包含main方法的Java程序。当测试人员传递参数是测试用例时,它将获取特征文件。 java程序调用自定义API,它将获取正确的功能文件。
接下来,我将调用Cucumber runner类来执行测试用例。我需要传递这个特殊的功能文件作为参数。两个问题,我们可以从不同的main方法调用runner类。我做了一些研究,但我找不到具体的答案。两个问题,
- cucumber.api.cli.Main.main(参数);那么我如何指定我的跑步者类的jar位置。 `FeatureFileCreation.main( “XXXXX”); - 获取正确特征文件的API String [] arguments = {“ - ”,“”}; cucumber.api.cli.Main.main(参数); 如何指定我的罐子所在的位置?我怎样才能传递我的功能文件?`
- 我应该在跑步者类中创建一个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程序。
答案
如果有效,请尝试此操作。你不需要任何Runner class
。只需调用Main class
的静态main方法,该方法对应于从cli运行黄瓜。
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设置了classpath和jar依赖项。
另一答案
不幸的是,接受答案是不正确的。如果你看看source的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);
以上是关于如何从不同的main方法调用Cucumber runner类的主要内容,如果未能解决你的问题,请参考以下文章