TESTNG使Java單元測試輕而易舉
深入瞭解testng,請訪問:http://www.yiibai.com/html/testng/2013/0914295.html
在每個軟件包的構造階段,測試階段都扮演扮演者中心角色。過去那種先編譯再測試的日子已經一去不去不返,現在大多數開發人員現在認識到需要採用編碼和測試彼此交織、同步推進的軟件方法論,以便儘早發現bug,在開發過程開始的時候就識別出風險。
TESTNG快速進階
1、TestNG概述
TestNG是一種基於註解的測試框架,通過添加諸如靈活的裝置、測試分類、參數測試、依賴方法、數據驅動等特性來克服JUnit的一些不足之處。由於TestNG可以輕鬆地將開發人員測試分類成單元組
組件組合系統組,因此能夠使構建時間保持在可管理的範圍內。通過使用group註釋和多重Ant任務,測試組可以不同的頻率運行在一臺工作站之上或者持續集成的環境中。
編寫一個測試的過程有3個典型步驟
(1)編寫測試的業務邏輯並在代碼中插入TestNG註解
(2)將測試信息添加到testng.xml或者build.xml中
(3)運行TestNG
2、TestNG聲明週期
TestNG測試用例的完整生命週期要經歷一下階段:類級初始化資源處理、方法級初始化資源處理、執行測試用例中的方法、方法級銷燬資源處理、類級銷燬資源處理。
3、使用TestNG
TestNG中使用@Test註解來標註一個測試方法。此外可以採用JDK5靜態導入功能導入斷言Assert類,這樣就可以很方便的在測試方法中使用斷言了。
package org.worm.biz; import org.testng.annotations.Test; import org.worm.util.StringUtil; import org.testng.annotations.BeforeClass; import org.testng.annotations.AfterClass; public class StringUtilTest { @Test public void f() { System.out.println("this is TestNG test case"); } @Test public void testStr(){ String trimStr = StringUtil.getTrimStr(" foo "); System.out.println("測試用:"+trimStr); } @Test public void testWithAssert(){ assert "foo".equals(StringUtil.getTrimStr(" foo ")); } @BeforeClass public void beforeClass() { System.out.println("this is before test method"); } @AfterClass public void afterClass() { System.out.println("this is after test method"); } }
但是,在運行測試之前,必須用特殊的XML文件配置TestNG,習慣上把這個文件命名爲testng.xml。這個文件首先定義測試套件Suite,這個套件裏只包含一個測試Test,這個測試由StringUtilTest類完成。
<?xml version="1.0" encoding="UTF-8"?> <suite name="Suite" parallel="false"> <test name="Test"> <classes> <class name="org.worm.biz.StringUtilTest"/> </classes> </test> <!-- Test --> </suite> <!-- Suite -->
測試結果:
[TestNG] Running: D:\workspace\workspace_worm\worm-parent\worm-biz\src\test\java\testng.xml this is before test method this is TestNG test case 測試用:foo this is after test method =============================================== Suite Total tests run: 3, Failures: 0, Skips: 0 ===============================================