Selenium 如何使用testng实现和运行cucumber测试文件

Selenium 如何使用testng实现和运行cucumber测试文件,selenium,cucumber,Selenium,Cucumber,尝试实现selenium+Cucumber+Testng而不是Junit 我的问题是 testng中@Runwith(Cucumber.class)的替代选项是什么 如何运行包含要素文件路径的类文件 安装TestNG Eclipse插件。之后,您应该能够运行TestNG Test。TestNG使用@CucumberOptions标记声明参数 @CucumberOptions(plugin = "json:target/cucumber-report.json") public class R

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

我的问题是

  • testng中@Runwith(Cucumber.class)的替代选项是什么
  • 如何运行包含要素文件路径的类文件



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

    TestNG使用@CucumberOptions标记声明参数

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

    看看这个:


    还有一个可能的dup:

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

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

    我不理解您的第二个问题,但您需要理解Cucumber runs默认执行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命令运行,并查看神奇之处:)

    我很高兴看到你的问题得到解决。如果这个问题还没有解决,请告诉我

    参考:

    我采用了这种方法:


    它肯定会工作。

    testng安装在eclipse的这个实例中。请你不要给出这样的答案。这个解决方案不起作用,不确定它是否得到了应用。我找到了这样的提示。当我在同一个类中添加@test注释时,它们正在运行。不知道这是不是正确的方法这是其中一种方法。Maven无法意识到在这种情况下什么是测试。这两个注释基本上告诉testng什么是测试。更清楚地说,“@test”用于将类/函数注释为测试,否则testng会将方法视为正常函数。当框架没有Cucumber等其他工具时,在测试套件中使用“@Test”。要充分利用要素文件并指定要运行的要素文件,必须使用“@CucumberOptions”注释。
    @CucumberOptions(features = "src/test/resources/features/Download.feature",
            glue = "uk.co.automatictester.jwebfwk.glue",
            format = {"pretty"})
    
    @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();
    }
     }
    
    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{
    }