maven-surefire-plugin插件

https://sq.163yun.com/blog/article/173632756223238144java

目前不少项目组的测试代码工程都是采用MAVEN+TESTNG的方式构造的。shell

 

所以测试代码project内的pom.xml就必不可少的有如下配置:apache

 

在pom.xml中配置testNG的依赖,以便自动下载应用于projectmaven

<dependencies>测试

  [...]ui

    <dependency>spa

      <groupId>org.testng</groupId>插件

      <artifactId>testng</artifactId>设计

      <version>6.8.8</version>xml

      <scope>test</scope>

    </dependency>

  [...]

</dependencies>

 

固然还须要有build中的插件配置:

 

<plugin>

          <groupId>org.apache.maven.plugins</groupId>

          <artifactId>maven-surefire-plugin</artifactId>

          <version>2.16</version>

           <configuration>

           <suiteXmlFiles>

              <suiteXmlFile>src/test/resources/basic.xml</suiteXmlFile>

           </suiteXmlFiles>

           </configuration> 

</plugin>

 

 

简单说下maven-surefire-plugin是个什么插件,它是一个用于mvn 生命周期的测试阶段的插件,能够经过一些参数设置方便的在testNG或junit下对测试阶段进行自定义。然而你们的时候通常都会按我上面的例子去配置,不多用到一些灵活的参数,这样的会不利于咱们的测试效率,违背了maven-surefire-plugin插件设计的初衷。

 

上面表格中的配置的意思就是默认指定了一个叫basic.xml测试集合。

执行命令:mvn clean test 

 

这样执行的就是我想要的basci.xml里面的测试用例。

 

这样能够知足咱们执行1个测试集的需求,然而当咱们的工程里有多个测试集例如:a.xml b.xml c.xml的时候该怎么办呢?

 

第1、首先能想到的一个最原始的办法:修改pom.xml文件

 

将  <suiteXmlFile>src/test/resources/basic.xml</suiteXmlFile>这一行更改成a.xml,或者b.xml 而后执行mvn clean test。

操做步骤演示以下:

 

 

然而这样的话若是我想在持续集成里面连续运行多个执行集的话就不方便这样操做,由于须要使用shell语言去控制你要运行测试的命令,这样的话就想到两种方式:用sed替换文本,或者直接复制多个pom.xml文件,用的时候重命名一下,这里选用第二种方式。

 

第2、在工程下构造多个xml文件

 

例如pom_a.xml pom_b.xml,他们内容的区别就是maven-surefire-plugin的suiteXmlFile属性分别指向a.xml和b.xml。而后运行的时候使用对应的pom*.xml文件。

操做步骤演示以下:

 

可是这样的话仍是会形成多个pom.xml文件,而且若是这些pom文件中涉及到depend依赖更新,就所有都须要更新一遍,形成没必要要的维护工做量。并且感受这样总不是根本办法。其实maven-surefire-plugin自己就支持指定不一样的测试套件xml,只须要在pom中配置一下,使用相应的命令就能够调用执行对应的测试套件了。

 

第3、maven-surefire-plugin设置灵活的测试套件参数

 

将上述pom.xml中的    <suiteXmlFile>src/test/resources/basic.xml</suiteXmlFile>改成以下配置                    <suiteXmlFile>${suiteXmlFile}</suiteXmlFile>

 

而后在pom.xml中的properties里加一行<suiteXmlFile>testng.xml</suiteXmlFile>

 

注意testng.xml不须要改为对应的测试套件名称,只是定义了一个变量,所以执行不一样的测试套件时不须要修改pom.xml文件。

 

pom.xml修改后以下所示:

<properties>

        <suiteXmlFile>testng.xml</suiteXmlFile>

    </properties>

 <plugin>

                <groupId>org.apache.maven.plugins</groupId>

                <artifactId>maven-surefire-plugin</artifactId>

                <version>2.16</version>

                <configuration>

                    <argLine>-Dfile.encoding=UTF-8</argLine>

                    <suiteXmlFiles>

                        <suiteXmlFile>${suiteXmlFile}</suiteXmlFile>

                    </suiteXmlFiles>

                </configuration>

            </plugin>

        </plugins>

 

 

 

 

 执行:mvn clean test -DsuiteXmlFile=src/test/resources/xml/a.xml 就能够调用你对应的a.xml中包含的测试用例了。

操做步骤演示以下:

 

 

是否是很简单呢,快快配起来吧

 

另外maven-surefire-plugin支持的一些经常使用命令参数列表见下:

 

mvn clean test -Dtest=Testabc 其中Testabc表示当前测试方法所在的测试类,不须要扩展名,即运行Testabc.java中的全部测试方法。

 

mvn clean test -Dtest=Test*c   其中以Test开头c结尾的全部类的全部测试方法都会运行。

 

 

 

更多maven-surefire-plugin的高级功能等待广大筒子进一步探索~

相关文章
相关标签/搜索