有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何运行testng。来自Maven命令行的xml

我的pom中有以下条目。配置中定义的套件文件的xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19.1</version>
    <configuration>
        <suiteXmlFiles>
            <suiteXmlFile>testng.xml</suiteXmlFile>
        </suiteXmlFiles>
    </configuration>
</plugin>

使用maven在cmd中运行此命令的正确方法是什么?我可以使用下面的命令运行测试,但是指示testng是没有意义的。在pom中已定义xml时,再次在命令中使用xml

 mvn clean test -DsuiteXmlFile=testng.xml

共 (4) 个答案

  1. # 1 楼答案

    首先,请在pom中添加改进。xml。。。需要添加执行部分:

    <executions>
    <execution>
        <phase>test</phase>
        <goals>
            <goal>test</goal>
        </goals>
    </execution>
    </executions>
    

    其次,可以在pom中创建节。带有变量的xml。然后,从cmd调用它

    <properties>
    <defaultSuiteFiles>
            ./Sets/Suits/CMS_Administration_SiteBackup_029.xml,
        </defaultSuiteFiles>
        <suiteFile>${defaultSuiteFiles}</suiteFile>
    </defaultSuiteFiles>
    </properties>
    ...
    ...
    <suiteXmlFiles>
        <suiteXmlFile>${suiteFile}</suiteXmlFile>
    </suiteXmlFiles>
    

    所以,原型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">
    .....
    .....
    
    
    <properties>        
        <defaultSuiteFiles>
            ./Sets/Suits/CMS_Administration_SiteBackup_029.xml,
        </defaultSuiteFiles>
        <suiteFile>${defaultSuiteFiles}</suiteFile>
    
    
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    
    <profiles>
        <profile>
            <id>Base configuration</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <defaultGoal>install</defaultGoal>
                <plugins>                    
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>2.19.1</version>
                        <inherited>true</inherited>
                        <executions>
                            <execution>
                                <phase>test</phase>
                                <goals>
                                    <goal>test</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <suiteXmlFiles>
                                <suiteXmlFile>${suiteFile}</suiteXmlFile>
                            </suiteXmlFiles>                            
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
    <dependencies>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.3.1</version>
        </dependency>
    </dependencies>
    </project>
    

    下面是cmd的一个例子:mvn test -DdefaultSuiteFiles="./YOUR_DIRECTORY/YOUR_SUITE.xml,"

    解释:在pom中。xml您可以将xml设置为默认值,并将其放置为变量。而且,如果在cmd中使用变量,则将重写值

  2. # 2 楼答案

    需要从testng的内容根传递路径。suiteXmlFiles标签之间的xml文件

    例如,我的项目代替了testng。xml我使用文件名作为所有测试。xml,位于TestSuites文件夹下

    <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>3.0.0-M5</version>
                    <configuration>
                        <suiteXmlFiles>
                            <suiteXmlFile>src/test/resources/TestSuites/AllTests.xml</suiteXmlFile>
                        </suiteXmlFiles>
                    </configuration>
     </plugin>
    

    现在运行mvn clean test, 它将从pom中选取测试套件文件。并运行本套件中提到的所有测试类

    注:

    1. 我们需要提及testng完整路径的原因。xml文件是, 因为默认情况下,maven将直接在项目级别下搜索此文件

    2. 如果您使用IntelliJ,您可以从内容根目录中找到testng的路径。xml文件,通过右键单击文件->;复制路径->;来自内容根目录的路径

  3. # 3 楼答案

    如果您有一个固定的testng xml,那么只需要执行mvn clean test。 默认情况下,surefire插件将在maven的测试阶段执行,并且将获取硬编码的xml

  4. # 4 楼答案

    最简单的解决方案是,在surefire插件中添加以下行

    <suiteXmlFiles>
        <!-- pass testng.xml files as argument from command line -->
        <suiteXmlFile>${suiteXmlFile}</suiteXmlFile>
    </suiteXmlFiles>
    

    并按如下方式运行xml文件

    mvn clean test -Dsurefire.suiteXmlFiles=/path/to/testng.xml