基於TestNG和Maven的介面測試之(一)- 基礎配置
基於TestNG的介面測試之(一)- 基礎配置
目錄
TestNG基本介紹
TestNG是Java中的一個測試框架,是一個目前很流行實用的單元測試框架,有完善的用例管理模組,配合Maven能夠很方便管理依賴第三方外掛。使用TestNG可以做功能、介面、單元、整合的自動化測試,最常見的是結合selenium做Web頁面的自動化測試和結合httpclient的介面測試,它使用Java註釋去寫測試方法。主要特點:
- 強大的註解功能;
- 資料驅動;
- 靈活的測試配置;
- 支援多種併發測試策略;
- 可以和多種工具(外掛)協同使用,比如Eclipse、IntelliJ IDEA和Maven等。
測試人員一般用TestNG來寫自動化測試,開發人員一般用Junit寫單元測試,TestNG適合測試人員使用的原因:
- 比Junit涵蓋功能更全面的測試框架;
- Junit更適合隔離性比較強的單元測試;
- TestNG更適合複雜的整合測試。
TestNG和Maven協同使用
前提條件: 安裝Java SDK。
安裝和配置
- 安裝與配置下載JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- Eclipse:https://eclipse.org/downloads/
- Intellij IDEA: https://www.jetbrains.com/idea/
- Maven:http://maven.apache.org/download.cgi#
Maven配置和使用
環境配置
-
將 Maven 下載到本地解壓後
-
設定環境變數"我的電腦"右鍵選單->屬性->高階->環境變數->系統變數->新建
- 變數名:MAVEN_HOME
- 變數值:D:\Java_maven\apache-maven-3.6.3\
-
找到"Path"變數名 ->"編輯"新增如下:
- 變數名:Path
- 變數值:MAVEN_HOME%\bin;
-
新增好了以後,開啟"cmd"執行"mvn -version"來測試Maven是否配置正確
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00) Maven home: D:\Java_maven\apache-maven-3.6.3\bin\.. Java version: 1.8.0_161, vendor: Oracle Corporation, runtime: D:\Java\jdk1.8.0_161\jre Default locale: zh_CN, platform encoding: GBK OS name: "windows 10", version: "10.0", arch: "x86", family: "windows"
Maven的配置
-
配置Maven倉庫
將maven的倉庫指向自己的原始碼存在的位置。
-
修改 Maven 倉庫的路徑。 開啟...\apache-maven-3.6.3\conf\settings.xml 檔案, 大概在49行到57行之間的位置做如下修改:
<localRepository>D:\\Git_genejiang2012\\my_testng\</localRepository>
-
-
開啟IDEA
2.1 新建Maven的project2.2 開啟IDEA的Settings, 修改Maven的路徑, maven的路徑為maven存放的本地路徑
2.3 開啟專案檔案下的POM.xml檔案
-
增加maven的外掛下載路徑
<dependencies> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>7.1.0</version> <scope>test</scope> </dependency> </dependencies>
-
加入testng的版本資訊, maven自動下載相關外掛
<dependencies> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>7.1.0</version> <scope>test</scope> </dependency> </dependencies>`
-
增加Build的資訊
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>${jdk.version}</source><!-- 原始碼使用的開發版本 --> <target>${jdk.version}</target><!-- 需要生成的目標class檔案的編譯版本 --> <!-- 解決maven test命令時console出現中文亂碼亂碼 --> <argLine>-Dfile.encoding=UTF-8</argLine> <testFailureIgnore>true</testFailureIgnore> <suiteXmlFiles> <suiteXmlFile>testNG.xml</suiteXmlFile> </suiteXmlFiles> </configuration> </plugin> <!-- 新增外掛 關聯testNg.xml --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.15</version> <configuration> <testFailureIgnore>true</testFailureIgnore> <suiteXmlFiles> <file>testNG.xml</file> </suiteXmlFiles> <!--<workingDirectory>target/</workingDirectory>--> </configuration> </plugin> </plugins> <!--配置resources 資源--> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/*.xls</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
2.4 在當前project建立testNG.xml
<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="my_test" parallel="false"> <test name="testDemo1"> <classes> <class name="com.genestudio.test.TestDemo"></class> </classes> </test> </suite>
2.5 新建package,
com.genestudio.test
, 在該package下面建立TestDemo
類package com.chiefclouds.test; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterGroups; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterSuite; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeGroups; import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeSuite; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; public class TestDemo { @BeforeSuite public void beforeSuite(){ System.out.println("Before Suite!"); } @AfterSuite public void afterSuite(){ System.out.println("After Suite!"); } @BeforeTest public void beforeTest(){ System.out.println("Before Test"); } }
2.6 maven中run test, 檢視log 結果
[INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- [INFO] Running TestSuite Hello TestNG [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.961 s - in TestSuite [INFO] [INFO] Results: [INFO] [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.535 s [INFO] Finished at: 2020-07-15T16:50:13+08:00 [INFO] ------------------------------------------------------------------------
2.7 檢視targe中生成中測試報告,
${project_dir}$\target\surefire-reports\emailable-report.html
![](https://raw.githubusercontent.com/genejiang2012/image_hosting/master/article/report.png)
-