轉載至 : http://www.yiibai.com/testng/
測試是檢查應用程序的功能的過程是否按要求工作,以確保在開發層面,單元測試成圖片。單元測試是單一實體(類或方法)的測試。單元測試是非常必要的,每一個軟件公司向他們的客戶提供高質量的產品。
JUnit 帶動開發人員瞭解測試的實用性,尤其是單元測試的時候比任何其他測試框架。憑藉一個相當簡單,務實,嚴謹的架構,JUnit已經能夠“感染”了一大批開發人員。 JUnit的特點,可以看看Junit 特點。
其中JUnit缺點:
-
最初的設計,使用於單元測試,現在只用於各種測試
-
不能依賴測試
-
配置控制欠佳(安裝/拆卸)
-
侵入性(強制擴展類,並以某種方式命名方法)
-
靜態編程模型(不必要的重新編譯)
-
不同的適合管理複雜項目中的測試可以是非常棘手.
TestNG是什麼?
TestNG按照其文檔的定義是:
TestNG是一個測試框架,其靈感來自JUnit和NUnit的,但引入了一些新的功能,使其功能更強大,使用更方便。
TestNG是一個開源自動化測試框架;TestNG表示下一代。 TestNG是類似於JUnit(特別是JUnit 4),但它不是一個JUnit擴展。它的靈感來源於JUnit。它的目的是優於JUnit的,尤其是當測試集成的類。 TestNG的創造者是Cedric Beust(塞德里克·博伊斯特)
TestNG消除了大部分的舊框架的限制,使開發人員能夠編寫更加靈活和強大的測試。 因爲它在很大程度上借鑑了Java註解(JDK5.0引入的)來定義的測試,它也可以告訴你如何使用這個新功能在真實的Java語言生產環境中。
TestNG的特點
-
註解
-
TestNG使用Java和麪向對象的功能
-
支持綜合類測試(例如,默認情況下,沒有必要創建一個新的測試每個測試方法的類的實例)
-
獨立的編譯時間測試代碼運行時配置/數據信息
-
靈活的運行時配置
-
主要介紹“測試組”。當編譯測試,只要問TestNG運行所有的“前端”的測試,或“快”,“慢”,“數據庫”等
-
支持依賴測試方法,並行測試,負載測試,局部故障
-
靈活的插件API
-
支持多線程測試
TestNG是一個Java的框架,所以第一個要求是JDK要安裝在你的機器上。
系統要求
JDK | 1.5或以上 |
---|---|
內存 | 沒有最低要求 |
磁盤空間 | 沒有最低要求 |
操作系統 | 沒有最低要求 |
步驟1 -驗證Java安裝在你的機器上
現在,打開控制檯並執行以下的java命令。
OS | 任務 | 命令 |
---|---|---|
Windows | 打開命令控制檯 | c:\> java -version |
Linux | 打開命令終端 | $ java -version |
Mac | 打開命令終端 | machine:~ joseph$ java -version |
讓我們來驗證所有的操作系統的輸出:
OS | 輸出 |
---|---|
Windows |
java version "1.7.0_25" Java(TM) SE Runtime Environment (build 1.7.0_25-b15) Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode) |
Linux |
java version "1.7.0_25" Java(TM) SE Runtime Environment (build 1.7.0_25-b15) Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode) |
Mac |
java version "1.7.0_25" Java(TM) SE Runtime Environment (build 1.7.0_25-b15) Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode) |
如果你沒有安裝Java,安裝Java軟件開發工具包(SDK)點擊: http://www.oracle.com/technetwork/java/javase/downloads/index.html. 我們假設本教程中安裝和使用Java1.7.0_25版本。
第二步:設置JAVA環境
設置JAVA_HOME環境變量指向的基本目錄的位置,在你的機器上安裝Java。例如:
OS | 輸出 |
---|---|
Windows | 設置環境變量 JAVA_HOME 爲 C:\Program Files\Java\jdk1.7.0_25 |
Linux | export JAVA_HOME=/usr/local/java-current |
Mac | export JAVA_HOME=/Library/Java/Home |
添加Java編譯器的位置,系統路徑。
OS | 輸出 |
---|---|
Windows | Append the string; C:\Program Files\Java\jdk1.7.0_25\bin to the end of the system variable, Path. |
Linux | export PATH=$PATH:$JAVA_HOME/bin/ |
Mac | not required |
驗證Java安裝使用命令java-version如上所述。
第3步:下載TestNG的歸檔文件
下載最新版本的TestNG的jar文件,詳細請點擊訪問 http://www.testng.org.。在寫這篇教程的時候,我下載TestNG中-6.8.jar,並將 testng-6.8.jar 其複製到 C:\>TestNG 目錄。
OS | 壓縮文件名 |
---|---|
Windows | testng-6.8.jar |
Linux | testng-6.8.jar |
Mac | testng-6.8.jar |
步驟4:設置TestNG的環境
設置TESTNG_HOME環境變量指向TestNG的jar 存放在您的機器上的基本目錄位置。假設,我們已經儲存了testng-6.8.jar, TestNG各種操作系統上的文件夾如下:
OS | 輸出 |
---|---|
Windows | Set the environment variable TESTNG_HOME to C:\TESTNG |
Linux | export TESTNG_HOME=/usr/local/TESTNG |
Mac | export TESTNG_HOME=/Library/TESTNG |
第5步:設置CLASSPATH變量
設置CLASSPATH環境變量指向TestNG的jar文件位置。假設,我們已經儲存了testng-6.8.jar, TestNG在各種操作系統上的文件夾如下:
OS | 輸出 |
---|---|
Windows | 設置環境變量 CLASSPATH 爲 %CLASSPATH%;%TESTNG_HOME%\testng-6.8.jar; |
Linux | export CLASSPATH=$CLASSPATH:$TESTNG_HOME/testng-6.8.jar: |
Mac | export CLASSPATH=$CLASSPATH:$TESTNG_HOME/testng-6.8.jar: |
步驟6:測試TestNG的設置
創建一個Java類文件名TestNGSimpleTest C:\ > TestNG_WORKSPACE
import org.testng.annotations.Test; import static org.testng.Assert.assertEquals; public class TestNGSimpleTest { @Test public void testAdd() { String str = "TestNG is working fine"; assertEquals("TestNG is working fine", str); } }
TestNG的幾種不同的方法可以被調用:
-
testng.xml 文件
-
ant
-
命令行
讓我們調用使用testng.xml文件。創建一個XML文件名稱testng.xml C:\ > TestNG_WORKSPACE 執行測試用例(s)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="Suite1"> <test name="test1"> <classes> <class name="TestNGSimpleTest"/> </classes> </test> </suite>
第7步:檢查結果
類編譯使用javac編譯如下:
C:\TestNG_WORKSPACE>javac TestNGSimpleTest.java
現在,調用testng.xml看到的結果:
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
驗證輸出
=============================================== Suite1 Total tests run: 1, Failures: 0, Skips: 0 ===============================================