轉自: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>3d <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的高級功能等待廣大筒子進一步探索~
本文來自網易實踐者社區,經做者崔曉晴受權發佈。