Maven在自動化中可以幫助我們更好的管理我們的工程,今天就來仔細學習下它的用法;
1.一個重要的插件:Maven surefire-plugin
用Maven的這個插件的目的主要是為了:用Maven直接調用testng的xml文件實現測試腳本的運行;
1.1引用
引用Maven surefire-plugin的方法如下:打開pom文件,找到Effective POM;

使用此插件,需要復制:
<plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.12.4</version>
到pom.xml文件,將其導入到pom.xml文件的時候,需要對其進行包裝,包裝后的引用如下:
<build> <plugins> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.12.4</version> <configuration> <excludes> <exclude>TestModule1/TestMavenSurefirePlugin.java</exclude> <exclude>TestModule2/TestJavaInPom.java</exclude> </excludes> <sureXmlFiles> <sureXmlFile> ${project.basedir}/src/test/java/TestModule1/TestMavenSurefirePlugin.xml </sureXmlFile> </sureXmlFiles> </configuration> </plugin> </plugins> </build>
注意下:<excludes>標簽,當沒有此標簽的時候,maven執行測試用例的時候,執行的是所有測試用例,加上此標簽后,會將此標簽下的測試用例進行排除后,執行指定的測試用例。
1.2Maven執行測試用例的兩種方式
注意:maven-surefire-plugin必須與testng.jar同時導入到pom.xml文件中的時候才可以使用Maven來調試testng的測試用例;Maven執行測試用例有兩種方式。
1.使用cmd命令行。
cd到項目指定路徑下,執行mvn test即可。

2.執行pom.xml文件,右鍵->Run as maven test執行。

1.3用Maven運行測試用例的好處
1.在一定程度上減少了必要步驟,尤其是命令行運行的方式,我們只需要有工程即可;
2.Maven運行的方式,會自動在target文件夾下生成測試報告。

1.4使用Maven運行不包含testng XML文件的java文件
具體場景如下:

此時pom.xml文件配置如下:
<build> <plugins> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.12.4</version> <configuration> <includes> <include> TestModule2/TestJavaInPom.java </include> </includes> </configuration> </plugin> </plugins> </build>
運行此腳本還是可以通過cmd命令行和pom.xml文件兩種方式。請注意<includes>標簽里面可以有多個<include>。即可以運行多個測試類。
1.5Maven設置多線程測試用例
實例:
import org.openqa.selenium.WebDriver; import org.testng.annotations.Test; import com.xinbao.utils.Browsers; import com.xinbao.utils.BrowsersType; public class TestMutipleThreads { private WebDriver driver; @Test public void visit360So() { Browsers browser = new Browsers(BrowsersType.chrome); driver = browser.driver; driver.get("https://www.so.com/"); driver.quit(); } @Test public void visitBKY() { Browsers browsers = new Browsers(BrowsersType.ie); driver = browsers.driver; driver.get("https://www.cnblogs.com/"); driver.quit(); } }
上面的測試類中我們需要驗證兩個測試用例,一個是打開360搜索,一個是打開博客園,我們此時想同時啟用兩個線程來驗證測試用例,就需要在:pom.xml文件中設置如下:
<build> <plugins> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.12.4</version> <configuration> <excludes>excludes標簽是排除的意思 <exclude>TestModule3/TestMutipleThreads.java</exclude> <exclude>TestModule2/TestJavaInPom.java</exclude> </excludes> <parallel>methods</parallel> <threadCount>3</threadCount> <sureXmlFiles> <sureXmlFile> ${project.basedir}/src/test/java/TestModule1/TestMavenSurefirePlugin.xml </sureXmlFile> </sureXmlFiles> </configuration> </plugin> </plugins> </build>
即需要添加:<parallel>和<threadCount>兩個標簽,請注意:設置的threadCount的數量最好大於測試用例數量,這樣可以極大的提高運行效率。
1.6Maven遠程調試
應用場景:什么時候會用到遠程調試呢?我們知道我們開發代碼會在某個IDE里進行(我習慣用Eclipse),它里面有自帶的java編譯體系,maven里面也有區別與IDE的java編譯體系,當我們在IDE里正常編譯的腳本,用maven編譯確報錯的時候,我們就需要對其進行遠程調試。
使用步驟如下:
1.在Eclipse里找到報錯的類,打上斷點;
2.登錄遠程機器;
3.在cmd命令行下,執行mvn -Dmaven.surefire.debug test命令即可在cmd命令行下顯示出報錯信息;
需要注意的是:我們使用遠程調試的時候,需要在Pom.xml文件的build標簽下添加:<defaultGoal>compile</defaultGoal>
2.Maven其他應用
2.1Maven的使用范圍
maven的依賴jar是有范圍的,maven中用dependency scope來限制依賴范圍。主要記住以下兩種情形。
1.所引用的jar存在於maven倉庫中,這里不區分maven私庫、中央庫亦或是本地庫,只要所引用的jar在maven庫中,此時默認的<scope>的值就是compile。即如下形式:
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>compile</scope> </dependency>
2.當所引用的jar以外部引用的形式提供,此時maven不會去倉庫查找它,要想在pom.xml文件中引用這類jar的時候,此時<scope>的值為system,並且要配置其路徑,即增加systemPath標簽,需要如下進行:
<dependency> <groupId>com.haibao</groupId> <artifactId>log4i</artifactId> <version>1.2.11</version> <scope>system</scope> <systemPath>${project.basedir}/files/log4j-1.2.11.jar</systemPath> </dependency>
2.2Maven項目引入同是Maven項目的依賴
想在Maven項目里引入同是Maven項目的依賴非常簡單,步驟如下:
1.工程->右鍵->Run as ->Maven install,會將此Maven工程打成jar包,並且放置在本地Maven倉庫中。

出現上圖中提示,證明已經構建完成。
2.引用的時候,直接pom.xml文件右鍵,Add dependency,輸入關鍵字,會優先從本地倉庫中將此jar包查詢出來,直接引用即可。

2.3Maven繼承
當我們在一個Maven工程里需要的許多jar來自於另一個Maven工程,此時我們可以使用Maven繼承,繼承的方式如下:
假設我們現在有兩個工程,父Maven工程為:MavenPlugin,子Maven工程為MavenExtends,此時我們想要MavenExtends工程下的pom.xml文件集成自MavenPlugin工程下的pom.xml文件。步驟如下:
1.將MavenPlugin的pom.xml文件的Packing修改為pom。(一般情況下必須為jar);

2.配置MavenExtends工程的pom.xml;

3.配置完成,點擊保存即可。此時查看MavenExtends工程的pom.xml文件,增加<parent>頁簽(放在<project>頁簽中間),如下所示:
<parent> <groupId>com.haibao</groupId> <artifactId>MavenPlugin</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath>../MavenPlugin/pom.xml</relativePath> </parent>
此時MavenExtends即可繼承工程MavenPlugin下的所有jar包;
