当前位置: 首页 > 知识库问答 >
问题:

Maven Surefire插件未启动TestNG套件XML文件中定义的测试

柴赞
2023-03-14

我正在开发一个测试自动化项目,使用:Maven、TestNG、Cucumber和Selenium WebDriver。我的操作系统是Windows 10,我使用IntelliJ作为我的IDE。

我有一个pom.xml文件,看起来像这样(项目名称更改为展示目的):

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>org.example</groupId>
<artifactId>project-name</artifactId>
<version>1.0-SNAPSHOT</version>

<dependencies>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>7.3.0</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>6.9.0</version>
    </dependency>

    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-testng</artifactId>
        <version>6.9.0</version>
    </dependency>

    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-picocontainer</artifactId>
        <version>6.9.0</version>
    </dependency>

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.141.59</version>
    </dependency>

    <dependency>
        <groupId>io.github.bonigarcia</groupId>
        <artifactId>webdrivermanager</artifactId>
        <version>4.2.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.11</version>
    </dependency>

    <dependency>
        <groupId>org.iban4j</groupId>
        <artifactId>iban4j</artifactId>
        <version>3.2.1</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>11</source>
                <target>11</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12.4</version>
            <configuration>
                <suiteXmlFiles>
                    <suiteXmlFile>src/test/resources/TestSuites/suite.xml</suiteXmlFile>
                </suiteXmlFiles>
                <testFailureIgnore>true</testFailureIgnore>
            </configuration>
        </plugin>
    </plugins>
</build>

TestNG suite“suite.xml”文件如下所示:

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="All Tests Suite" verbose="1">
<test name="Test">
    <classes>
        <class name="Runners.RunnerAllFeatures"/>
    </classes>
</test>
</suite>

套件文件的测试类是“RunneralFeatures”。当我手动启动该套件文件(右键单击并“运行”)时,它工作得很好——“RunnerAllFeatures”中定义的场景正在执行。Runner类“RunneralFeatures”如下所示:

package Runners;
import io.cucumber.testng.AbstractTestNGCucumberTests;
import io.cucumber.testng.CucumberOptions;
@CucumberOptions(
    features = {"src/test/resources/Features/completed"},
    glue = {"StepDefinitions"},
    monochrome = true,
    plugin = {"pretty", "html:target/cucumber.html"}
    )
public class RunnerAllFeatures extends AbstractTestNGCucumberTests{}

当我试图通过终端中的Maven运行“suite.xml”时,出现了问题。我用“mvn清洁测试”来做这个。生成摘要声明“生成成功”,但未运行任何测试。日志行“TES”甚至不存在。没有(国际海事组织)对该问题有重大意义的警告。以下是其中一个日志片段:

    C:\Users\username\IdeaProjects\project-name>mvn clean test
[INFO] Scanning for projects...
[INFO]
[INFO] -------------< org.example:project-name >--------------
[INFO] Building project-name 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ project-name ---
[INFO] Deleting C:\Users\username\IdeaProjects\project-name\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ project-name ---
[WARNING] Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 4 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ project-name ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 39 source files to C:\Users\username\IdeaProjects\project-name\target\classes
[INFO] /C:/Users/username/IdeaProjects/project-name/src/main/java/baseMethods/BaseMethods.java: C:\Users\username\IdeaProjects\project-name\src\main\java\baseMethods\BaseMethods.java uses un
checked or unsafe operations.
[INFO] /C:/Users/username/IdeaProjects/project-name/src/main/java/baseMethods/BaseMethods.java: Recompile with -Xlint:unchecked for details.
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ project-name ---
[WARNING] Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 17 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ project-name ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 17 source files to C:\Users\username\IdeaProjects\project-name\target\test-classes
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ project-name ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.108 s
[INFO] Finished at: 2021-12-29T13:46:30+01:00
[INFO] ------------------------------------------------------------------------

我尝试在POM到“suite.xml”的路径中将反斜杠改为正斜杠,但没有任何改变。我试图参数化这条路径,但结果是一样的。我有另一个测试自动化项目,在这个项目中,技术堆栈的唯一区别是缺少cucumber。TestNG套件文件指向一个带“@Test”注释的类。通过Maven Surefire启动套件文件在那里效果很好。

如果需要更多的信息,我会尽力提供。

共有1个答案

海雪松
2023-03-14

找到了解决方案。运行程序类名是错误的——它必须包括单词“测试”。请参见:https://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html

我知道Maven的命名约定,但我并不怀疑这可能是一个问题,因为“RunneralFeatures”是一个runner类,而不是测试类。

 类似资料:
  • 我有以下testng.xml文件。我希望testng按顺序运行这些测试。我不想将这些测试中的每一个分开到一个新文件中。 我在套件级别上尝试了parallel=“tests”、“classes”、“methods”和thread count=1的组合,但都没有成功。

  • 我正在使用maven运行我的集成测试,这些测试在TestNG套件中。在Eclipse下运行套件时--我的测试套件运行成功。当运行“mvn verify”来运行我的集成测试时,我看到failsafe插件配置调试打印,其中包括suite.xml文件和我编译的类的正确路径,但它没有执行我的测试(构建过程成功完成)。 我尝试过运行相同的pom配置,但是使用了surefire插件而不是failsafe插件,

  • 主要内容:1. 测试类,2. testng.xml,其他例子测试套件是用于测试软件程序的行为或一组行为的测试用例的集合。 在TestNG中,我们无法在测试源代码中定义一个套件,但它可以由一个XML文件表示,因为套件是执行的功能。 它还允许灵活配置要运行的测试。 套件可以包含一个或多个测试,并由标记定义。 是的根标记。 它描述了一个测试套件,它又由几个部分组成。 下表列出了接受的所有定义的合法属性。 属性 描述 name 套件的名称,这是一个强制属性。 ve

  • 有人能帮助创建一个硒TestNgXML文件动态通过Java程序如下格式。 仅对于那些在Excel中标记为yes的测试用例,将从excel文件(这是一个测试套件,控制执行)中读取类名。仅供参考,控制执行(测试套件引擎)的Excel文件包含列TCName、Run(yes/No)和每个测试的类名。

  • 我正在使用Maven对一个网站运行TestNG集成测试。目前,我可以使用此命令运行特定的测试类: 我还希望能够指定一个TestNG套件XML文件来运行一系列带有特定参数的类。 我可以在我的POM中设置故障安全插件来接受suiteXmlFiles参数,如下所示: 让我发出这个命令: 但现在我不能用-Dit了。test=“MyTestClassname”选项,因为Maven现在试图传递一个空值作为套件

  • 我有一个testng xml文件,它被设置为运行一个特定的类,该类的方法包含以下组标记或被分组为以下类型之一: 并行测试 顺序测试 烟雾测试 虽然我的一些测试被指定为并行或顺序测试,但一些测试可能包含一个额外的标签“冒烟测试”。在这个场景中,我希望能够只运行那些被归类为“烟雾测试”的组件。当我运行测试时,它要么找不到任何测试,要么只是运行所有分组为“sequential-test”的测试。我似乎不