具有surefre的Maven不会从TestNG xml套件文件运行测试

时间:2018-11-30 10:48:56

标签: java maven intellij-idea testng maven-surefire-plugin

我正在使用IntelliJ,TestNG,Selenium Web Driver和Maven作为依赖项,以为我的PHP网站创建自动化测试。我已经创建了几个TestNG xml套件文件,并且可以在IntelliJ中运行它们(右键单击xml文件并点击RUN),没有问题。

由于我希望能够使用Maven在Jenkins上运行那些TestNG xml,因此我首先尝试使用“ mvn clean test”在终端中手动运行它们,但始终运行所有以* Test结尾的TestNG测试类。我无法使用终端运行任何TestNG xml套件文件。

让我们暂时说一下,我只希望allTests.xml运行其中的所有内容,即“ SomeModule.Smoke”测试类(我希望该类的名称可以从xml运行任何格式)。我将“ allTests.xml”放在POM中,但是无论我在surefire中插入什么内容,始终以* Test开头运行所有测试,本例中为RegressionTest.java。似乎完全忽略了标签。

您可以看到我在不同目录中创建了许多xml文件,因此我尝试了相对路径和绝对路径...没有任何作用。

我的项目结构:

├── testSuite1.xml
├── testSuite2.xml
├── allTests.xml
├── myproject.iml
├── deps
│   ...
├── pom.xml
├── src
│   └── test
│       ├── java
│       ├── SomeModule
│       │   │   ├── Smoke.java
│       │   │   ├── RegressionTest.java
│       │   └── testSuite3.xml
│       └── resources
│           └── testSuite4.xml
├── target
│   ├── generated-test-sources
│   │   └── test-annotations
│   ├── maven-status
│   │   └── maven-compiler-plugin
│   │       └── testCompile
│   ├── surefire-reports
│   │   ...
│   └── test-classes
│       ├── SomeModule
│       │   ├── Smoke.class
│       │   ├── RegressionTest.class
│       └── testSuite4.xml
├── test-output
│   ...
├── testSuite5.xml

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>CNW</groupId>
    <artifactId>myproject</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.14.3</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.8.1</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.5.0-b01</version>
        </dependency>
        <dependency>
            <groupId>velocity</groupId>
            <artifactId>velocity-dep</artifactId>
            <version>1.4</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.google.inject/guice -->
        <dependency>
            <groupId>com.google.inject</groupId>
            <artifactId>guice</artifactId>
            <version>4.2.2</version>
        </dependency>
    </dependencies>
    <properties>
        <maven.compiler.source>1.9</maven.compiler.source>
        <maven.compiler.target>1.9</maven.compiler.target>
    </properties>
    <profiles>
        <profile>
            <id>myproject_profile</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>3.0.0-M1</version>
                        <configuration>
                            <testSourceDirectory>${basedir}/src/test/java/</testSourceDirectory>
                            <testClassesDirectory>${project.build.directory}/test-classes/</testClassesDirectory>
                            <suiteXmlFiles>
                                <suiteXmlFile>allTests.xml</suiteXmlFile>
                            </suiteXmlFiles>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>

allTests.xml

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="allTestsSuite" verbose="1" >
    <test name="Smoke">
        <classes>
            <class name="SomeModule.Smoke"/>
        </classes>
    </test>
</suite>

0 个答案:

没有答案