无法使用 testng.xml 执行 Cucumber 功能文件

Posted

技术标签:

【中文标题】无法使用 testng.xml 执行 Cucumber 功能文件【英文标题】:Not able to execute Cucumber feature file using testng.xml 【发布时间】:2020-11-02 13:50:51 【问题描述】:

我有 2 个功能文件,我想通过 testng 并行执行。如果我执行 mvn test 它显示 Build Success 但它不执行测试用例。有人可以帮忙吗?请在下面找到我的结构。

TestNG.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "FlipkartSmoke" verbose="1" thread-count="2" parallel="methods">
<test name = "FlipkartLogin">
<classes>
    <class name="runner.testrunner">
    </class>
</classes>
</test>
</suite>

testrunner.java:

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

@CucumberOptions(
        features="src\\test\\java\\features",
        glue= "seleniumGlueCode",
        format= "html:target",
        monochrome=true,
        dryRun=false
        )

public class testrunner extends AbstractTestNGCucumberTests


pom.xml:

<plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
          <configuration>
                 <includes>
                 <include>TestNG.xml</include>
             </includes>
      </configuration>
</plugin>

pom.xml:

<dependencies>
  
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
        
       <!-- ********************************************************************************  -->
         <!-- Selenium Dependencies  -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.7.0</version>
        </dependency>
        
        <!-- ********************************************************************************  -->
         <!-- Cucumber Dependencies  -->
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>1.2.5</version>
        </dependency>
        
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>1.2.5</version>
            <scope>test</scope>
        </dependency>
        
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-core</artifactId>
            <version>1.2.5</version>
        </dependency>
        
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-jvm-deps</artifactId>
            <version>1.0.5</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>gherkin</artifactId>
            <version>13.0.0</version>
        </dependency>
        
        
        <!-- ********************************************************************************  -->
         <!-- TestNG Dependencies  -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.10</version>
            <scope>test</scope>
        </dependency>
        
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-testng</artifactId>
            <version>4.2.0</version>
        </dependency>
        
        <!-- ********************************************************************************  -->
         <!-- Excel Read Dependencies  -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.1</version>
        </dependency>
        
        <!-- ********************************************************************************  -->
        <!-- Common io Dependencies  -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
        
    </dependencies>

它显示构建成功。但它没有执行测试用例。但是如果我尝试在 testrunner 中使用 @runWith 作为 junit 测试用例的意思,两个功能文件都在执行。

【问题讨论】:

【参考方案1】:

我认为您正在将 JUnit 测试和 TestNG 测试与 Surefire 插件混合使用。 即使您将“包含”与“suiteXmlFiles”混合在一起。所以我对你的建议是停止并阅读文档,编写几乎没有 Java 代码或最少代码的小 Maven 项目,并使用命令 mvn test 让 POM 正常工作。让基本项目正常工作并理解这一点非常重要。 https://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html 无论如何,盯着很多杂乱的依赖项和代码会让你的头脑变得一团糟。因此,从基本人员开始。

【讨论】:

事情就像我用黄瓜尝试了简单的junit。因为我可以像junit一样执行测试用例,但是如果我通过maven方式尝试,它显示构建成功但不执行测试用例 我们在 Apache 中通常不会就 *** 上的错误进行交流,因为我们看不到您的项目。理想的情况是在 GitHub 上处理您的项目。你能把你的项目推送到 GitHub 上吗?我们可以继续,我们可以使用 PR、问题、提交中的 cmets 等所有样式。

以上是关于无法使用 testng.xml 执行 Cucumber 功能文件的主要内容,如果未能解决你的问题,请参考以下文章

我必须在哪个目录中放置 testng.xml?

testng教程之testng.xml的配置和使用,以及参数传递(多线程执行)

TestNG基础教程 - TestNG.xml中的测试级别和常用注解执行顺序

详解testng.xml

Eclipse TestNG:“无法在类路径中找到类”,即使它是用 testng.xml 映射的

testng教程之testng.xml的配置和使用,以及参数传递