我应该在黄瓜上迁移。我确实有使用Selenium的项目框架,使用Data Driven Framework的TestNG,Maven。我正在探索使用TestNG注释进行黄瓜的可行性。
我的问题是,我们如何在@Test方法和黄瓜的Step定义之间建立连接。让我们举例说明我们的代码是用@ BeforeClass,@ Test,@ AfterClass方法编写的。那么我们如何使用Step定义进行迁移。
功能文件:
Feature: Is it Friday yet?
Everybody wants to know when it's Friday
Scenario: Sunday isn't Friday
Given today is Sunday
When I ask whether it's Friday yet
步骤定义:
@Given("^today is Sunday$")
public void today_is_Sunday() {
// Write code here that turns the phrase above into concrete actions
System.out.println("this is demo1");
}
@When("^I ask whether it's Friday yet$")
public void i_ask_whether_is_s_Friday_yet() {
// Write code here that turns the phrase above into concrete actions
System.out.println("this is demo2");
}
课堂锻炼:
@CucumberOptions(features = "cfeature/firstDemo.feature", glue = { "mytest/Stepd" })
public class demo01 extends AbstractTestNGCucumberTests {
private TestNGCucumberRunner tcr;
@BeforeClass(alwaysRun = true)
public void beforeClass() throws Exception {
tcr = new TestNGCucumberRunner(this.getClass());
}
@Test(groups="cucumber", description="Runs CucumberFeature")
public void testdemo() {
System.out.println("Hello");
}
@AfterClass(alwaysRun = true)
public void afterClass() {
tcr.finish();
}
}
控制台:
Hello
[33mUndefined scenarios:[0m
[33mcfeature/firstDemo.feature:4 [0m# Sunday isn't Friday
1 Scenarios ([33m1 undefined[0m)
5 Steps ([33m5 undefined[0m)
0m0.073s
You can implement missing steps with the snippets below:
到目前为止,@ Test批注正在调用。但是,如何将其替换为“步骤定义”。请协助。
答案 0 :(得分:2)
不确定这里有什么混乱之处。这是将TestNG和黄瓜术语联系起来的方法。
<test>
标签可以可视化为黄瓜中的特征文件。@Test
方法可以可视化为黄瓜中的一个场景。 AbstractTestNGCucumberTests
的默认实现如下:
@Test
方法,该方法检索功能文件中的所有方案,然后一个接一个地运行它们。您可以构建自己的AbstractTestNGCucumberTests
变体来执行各种不同的操作(例如,支持并发方案执行,而Cucumber JVM绑定当前不支持并发方案执行)。
作为示例,您可以看一下我构建的Cucumber-roadrunner库,该库使用上述概念来支持并行方案执行并提供线程安全报告。
关于您所面临的错误,You can implement missing steps with the snippets below:
基本上是因为黄瓜jvm绑定可能无法使用粘合代码来绑定特征文件(这是您通过{{ 1}}注释)。您也许应该仔细研究Cucumber jvm绑定文档,以了解如何提供正确的值。
答案 1 :(得分:0)
您还可以查看gherkin with QAF,它是针对小黄瓜的纯TestNG实现。它使用 TestNG(不是黄瓜赛跑者),并为您提供testNG的所有功能,包括并行执行,侦听器,分组,优先级等...
每个方案都转换为TestNG测试,您可以并行运行方案。此外,您还可以在inbuilt期间使用authoring BDD或自定义数据提供者。无需额外的运行程序,只需为您使用的appropriate factory使用BDD syntax类进行常规配置即可。