gpt4 book ai didi

selenium - 如何使用 TestNG 注释执行 Cucumber Step 定义

转载 作者:行者123 更新时间:2023-12-02 22:01:12 25 4
gpt4 key购买 nike

我应该在 Cucumber 上迁移。我确实有 Selenium 的项目框架、带有数据驱动框架的 TestNG、Maven。我正在探索 Cucumber 使用 TestNG 注释的可行性。

我的问题是,我们如何在 @Test 方法和 Cucumber 的 Step 定义之间创建连接。举个例子,我们的代码是用@BeforeClass、@Test、@AfterClass方法编写的。那么我们如何使用步骤定义进行迁移。

功能文件:

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注解正在调用。但是,如何用步骤定义替换它。请帮忙。

最佳答案

不知道这里有什么困惑。以下是如何将 TestNG 和 Cucumber 术语联系起来。

  • <test> TestNG中的标签可以可视化为cucumber中的特征文件。
  • @Test TestNG 中的方法可以可视化为 Cucumber 中的场景。
  • cucumber 中的步骤定义与 TestNG 中没有直接等效的内容,因为它是场景的一部分。但为了便于理解,您可以将其可视化为在 TestNG 中执行逻辑运算的一行代码。

AbstractTestNGCucumberTests的默认实现如下:

  • 它内部包含一个数据提供程序,一次提供一个功能文件。
  • 它包含 @Test方法,该方法绑定(bind)到上述数据提供程序,该方法检索特征文件中的所有场景,然后逐一运行它们。

您可以构建自己的 AbstractTestNGCucumberTests 变体做各种不同的事情(例如支持并发场景执行,这在 Cucumber JVM 绑定(bind)中目前不可用)。

作为示例,您可以查看 Cucumber-roadrunner我构建的库使用上述概念来支持并行场景执行,并提供线程安全报告。

关于您面临的错误,即 You can implement missing steps with the snippets below:基本上是因为 Cucumber jvm 绑定(bind)可能无法使用粘合代码绑定(bind)您的功能文件(这是您通过 @CucumberOptions 注释提供的)。您也许应该仔细查看 Cucumber jvm 绑定(bind)文档,以了解如何提供正确的值。

关于selenium - 如何使用 TestNG 注释执行 Cucumber Step 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51325450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com