【问题标题】:How to implement and run cucumber test files using testng如何使用 testng 实现和运行黄瓜测试文件
【发布时间】:2017-02-03 16:39:47
【问题描述】:

尝试实现 selenium + Cucumber + Testng 而不是 Junit。

我的查询是

  1. testng 中@Runwith(Cucumber.class) 的替代方法是什么
  2. 如何运行包含特征文件路径的类文件

package runner;

import cucumber.api.CucumberOptions;
import cucumber.api.testng.AbstractTestNGCucumberTests;


@CucumberOptions(features="src/main/java/testCases/Cucumber/Login_Cucumber.Feature",glue="")
public class TestRunner extends AbstractTestNGCucumberTests {

}

【问题讨论】:

    标签: selenium cucumber


    【解决方案1】:

    TestNg 使用@CucumberOptions 标签声明参数

    @CucumberOptions(plugin = "json:target/cucumber-report.json")
    public class RunCukesTest extends AbstractTestNGCucumberTests {
    }
    

    @CucumberOptions(features = "src/test/resources/features/Download.feature",
            glue = "uk.co.automatictester.jwebfwk.glue",
            format = {"pretty"})
    

    看看这个:https://github.com/cucumber/cucumber-jvm/tree/master/examples/java-calculator-testng

    也可能是 :How to integrate the cucumber in testNG?

    【讨论】:

    • 我发现了这种技巧。当我在同一个类中添加@test 注释时,这些正在运行。不知道这样对不对
    • 是其中一种方式。在这种情况下,Maven 无法意识到什么是测试。这两个注解基本上告诉 testng 什么是测试。
    • 为了更清楚,“@test”用于将类/函数注释为测试,否则TestNG会将方法视为普通函数。当框架没有像 Cucumber 这样的其他工具时,在测试套件中使用“@Test”。要充分利用您的功能文件并指定要运行的功能文件,必须使用“@CucumberOptions”注解。
    【解决方案2】:

    安装 TestNG Eclipse 插件。之后您应该能够运行 TestNG Test

    【讨论】:

    • testng 安装在这个 Eclipse 实例中。要求你不要给出这样的答案。
    • 这个解决方案不起作用,不确定它是否得到了投票
    【解决方案3】:

    首先,Cucumber 有 .feature 文件而不是测试文件。

    回答你的第一个问题: 1. testng 中@Runwith(Cucumber.class) 的替代品是什么? “使用 TestNG 运行时不需要 @RunWith”

    我不明白你的第二个问题,但你需要了解 Cucumber 运行结束时默认执行 Runner 类,并且你已经在 @CucumberOptions 部分定义了功能文件。

    为了更清楚,您可以使用 TestNG 轻松实现和运行 Cucumber 项目。整个游戏在你的 pom.xml 文件和 Runner 类中。

    以下详细信息还说明您可以使用 TestNG 在 cucumber 中运行每个场景作为测试。

    怎么样?解释如下:

    首先,将你的 Cucumber Maven 依赖项从 info.cukes 更新为 io.cucumber 依赖项

    在 Cucumber Runner 类中遵循 Java 代码非常适合我在功能文件中将每个场景作为 TestNG 测试运行:

    @CucumberOptions(features = "src/test/resources", plugin = "json:target/cucumber-report-feature-composite.json")
    public class TestRunner {
    private TestNGCucumberRunner testNGCucumberRunner;
    
    @BeforeClass(alwaysRun = true)
    public void setUpClass() throws Exception {
        testNGCucumberRunner = new TestNGCucumberRunner(this.getClass());
    }
    
    @Test(groups = "cucumber scenarios", description = "Runs Cucumber 
    Scenarios", dataProvider = "scenarios")
    public void scenario(PickleEventWrapper pickleEvent, CucumberFeatureWrapper 
    cucumberFeature) throws Throwable{
    testNGCucumberRunner.runScenario(pickleEvent.getPickleEvent());
    }
    @DataProvider
    public Object[][] scenarios() {
        return testNGCucumberRunner.provideScenarios();
    }
    
    @AfterClass(alwaysRun = true)
    public void tearDownClass() throws Exception {
        testNGCucumberRunner.finish();
    }
     }
    

    使用 mvn clean test 命令运行,看看神奇:)

    我很高兴看到您的问题得到解决。如果此问题仍未解决,请告诉我。

    参考:https://github.com/cucumber/cucumber-jvm/blob/master/testng/README.md

    我遵循了这种方法:https://github.com/cucumber/cucumber-jvm/blob/master/examples/java-calculator-testng/src/test/java/cucumber/examples/java/calculator/RunCukesByCompositionTest.java

    【讨论】:

      【解决方案4】:
      import cucumber.api.CucumberOptions;
      import cucumber.api.testng.AbstractTestNGCucumberTests;
      @CucumberOptions(features="src/test/resources/features",glue="stepDefinitions",tags="@Test01",plugin= {"pretty", "html:target/cucumber-reports" },monochrome=true)
      public class RunnerTest extends AbstractTestNGCucumberTests{
      }
      

      它肯定会起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-07
        • 2013-10-17
        • 2020-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多