一、TestNg簡介
TestNg是一個測試框架,靈感來自於Junit和NUnit,但是增加了很多新的功能,讓他顯得要比junit和Nunit更加的強大,這也就是爲什麼他從一出道就號稱是下一代單元測試框架的原因,在本節中,我們通過一個很小的例子,讓大家體驗一下,什麼事testNg,並且進行一下簡單的聯繫
1、TestNg的官方網址,大家可以在上面進行下載
如果您是Maven的忠實粉絲,那麼可以通過Maven的定位獲得你想要的TestNg包
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.1.1</version>
<scope>test</scope>
</dependency>
2、TestNG的特性:
2.1 、完全註解
2.2 、你可以運行您的unit test在任意大的線程池中(所有的方法都有屬於自己的線程,每一個class都有一個自己的線程等等)
2.3、靈活的測試配置文件
2.4、支持數據驅動測試(@DataProvider)
2.5、支持參數
2.6、功能強大的運行模式(不再需要TestSuite)
2.7、支持一系列的工具和插件(eclipse, IDEA, Maven, 等)
2.8、嵌入Beanshell腳本語言支持擴展
2.9、默認的JDK函數用於運行時和日誌記錄(不再依賴於其他第三方)
2.10、依賴於應用服務器的測試方法。
TestNg被設計成覆蓋所有類型的測試,包括:單元測試,功能測試,端對端測試,集成測試,等等。
3、開始一個簡單的TestNG演示吧(譯者注:官網的例子不完整,我將其補充完整)
3.1、Java代碼如下所示:
package example;
import org.testng.annotations.*;
public class SimpleTest {
@BeforeClass
public void setUp() {
// code that will be invoked when this test is instantiated
}
@Test(groups = { "fast" })
public void aFastTest() {
System.out.println("Fast test");
}
@Test(groups = { "slow" })
public void aSlowTest() {
System.out.println("Slow test");
}
}
解釋:其中setUp方法被@BeforeClass標註,表示該方法在SimpleTest類創建後會首先執行,被@Test註解表示該方法是測試方法,其中groups屬性表示該測試方法隸屬於哪個組,關於groups屬性,在後面的章節中將會介紹。
本例的意圖是運行fast分組的test,然後slow將會被忽略掉,一些需要注意的事項:
1、無需繼承某個類或者實現某個接口(junit4.x也是可以做到的)
2、每一個測試方法你可以隨便起名字,可以被TestNg的標記標識(官方文檔,個人覺得是廢話)
3、一個測試方法可以屬於一個或者多個分組。
3.2、接下來編寫一個ANT腳本,進行單元測試的運行。
<?xml version="1.0"?>
<project name="testNg" basedir="." default="test">
<path id="test-path">
<fileset dir="lib">
<include name="**/*.jar" />
</fileset>
<pathelement location="classes"/>
</path>
<path id="compile-path">
<fileset dir="lib">
<include name="**/*.jar" />
</fileset>
</path>
<taskdef name="testng" classpathref="test-path" classname="org.testng.TestNGAntTask" />
<target name="compile">
<javac srcdir="src" destdir="classes" failοnerrοr="true">
<classpath refid="compile-path">
</classpath>
</javac>
</target>
<target name="test" depends="compile">
<testng classpathref="test-path" groups="fast">
<classfileset dir="classes" includes="example/*.class"/>
</testng>
</target>
</project>
3.3、運行Ant腳本,記得要講testng.jar放到lib下哈,運行結果如下所示:
Buildfile: E:\Execise\testng\chapter1\build.xml
compile:
[javac] E:\Execise\testng\chapter1\build.xml:20: warning: 'includeantruntime
' was not set, defaulting to build.sysclasspath=last; set to false for repeatabl
e builds
test:
[testng] [TestNG] Running:
[testng] Ant suite
[testng]
[testng] Fast test
[testng]
[testng] ===============================================
[testng] Ant suite
[testng] Total tests run: 1, Failures: 0, Skips: 0
[testng] ===============================================
[testng]
BUILD SUCCESSFUL
Total time: 2 seconds
3.4、testng比較強大的一點是,可以自動幫你生成一個測試報告,該報告會在test-output。
好了,關於第一篇TestNg的文章到此結束,後面的文章會陸續更新關於官網的資料翻譯,另外還會翻譯一本關於TestNg的電子書,希望大家多多交流!