TestNg--The next generation of testing

一、TestNg簡介

       TestNg是一個測試框架,靈感來自於Junit和NUnit,但是增加了很多新的功能,讓他顯得要比junit和Nunit更加的強大,這也就是爲什麼他從一出道就號稱是下一代單元測試框架的原因,在本節中,我們通過一個很小的例子,讓大家體驗一下,什麼事testNg,並且進行一下簡單的聯繫

1、TestNg的官方網址,大家可以在上面進行下載

http://testng.org/

如果您是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的電子書,希望大家多多交流!




發佈了32 篇原創文章 · 獲贊 21 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章