TestNG環境搭建以及框架初識
TestNG的英文為Test Next Generation, 聽上去好像下一代測試框架已經無法正常命名了的樣子,哈哈,言歸正傳,啥是TestNG呢,它是一套測試框架,在原來的Junit框架的思想基礎上開發的新一代測試框架,既然這么牛b,那果斷弄來試試。本文主要從安裝步驟-->第一個測試例子-->再多一點例子-->框架分析-->suite文件的書寫-->總結結束。
安裝步驟:
1. 第一步,當然首先是在你的java sdk, eclipse ide, system environment,都已經配置好了的情況下進行, 這些本人早就搭建好了,為了體現手把手教學,這里附加上本人的開發環境參數:os: win 8, java_version: 1.7, path: (added), eclipse_version: 4.3.1, 好了,其實只要裝好這些就行了,版本么,再說,哈哈,開工
2. 第二步,去官網download一個TestNG插件,這個工作在eclipse內完成,點擊help->install new software,緊接著填上http://beust.com/eclipse
然后一路next到finish。好了TestNG插件裝上了,為了check一下是否正常工作,新建一個空的工程,然后再新建一個一個TestNG類試一下,如果能夠正常建立,那么就成功了,步驟:file->new->Other,會看到
如果這個看到了,那么okay,恭喜你,可以開工寫測試的case了,至此,環境搭建完成。
第一個測試例子:
點擊src包上右擊,新建一個類,->new->class,包名就叫cases吧,類名就叫CaseOne吧不要main方法,然后finish
寫第一個TestNG的帶有@Test的方法如圖

這樣前面的case沒通過,后面的當然也不會過,比如將注釋掉的那句代碼去掉就不會通過執行后面兩case了。
我們還可以對method進行分組,如
@Test(groups={"group1"})
這樣就不用像方法3那樣倚賴寫一大串了,只需要一個group的名字便可以了。
框架分析
再來看看別的annotation吧!上代碼
package cases; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; public class TestCase2 { @BeforeTest public void setUp(){ System.out.println("*******before********"); } @BeforeMethod public void beforeMethod(){ System.out.println("*******beforeMethod********"); } @AfterMethod public void afterMethod(){ System.out.println("*******aftermethod********"); } @Test public void t1(){ System.out.println("*********t1**********"); } @Test public void t2(){ System.out.println("*********t2**********"); } @BeforeClass public void beforeClass(){ System.out.println("*****beforeClass*****"); } @AfterClass public void afterClass(){ System.out.println("*****afterClass*****"); } @AfterTest public void finish(){ System.out.println("*******finish********"); } } |
運行得到結果如下
*******before******** *****beforeClass***** *******beforeMethod******** *********t1********** *******aftermethod******** *******beforeMethod******** *********t2********** *******aftermethod******** *****afterClass***** *******finish******** PASSED: t1 PASSED: t2 =============================================== Default test Tests run: 2, Failures: 0, Skips: 0 =============================================== |
這樣一來咱們就大概的知道了不同的annotation下的方法的執行順序了。基本上是@BeforeTest->@BeforeClass->(@BeforeMethod->@Test->@AfterTest)->...重復()內內容...->@AfterClass->@AfterTest.好了,框架基本如下,
再多一點例子:
同時建立多個Class,如
如果全部選中,當然會從上當下的執行,但是萬一有些文件我們不想執行呢,比如CaseOne中的method1我們想跳過去,那就得寫一個控制文件了,在TestNG中使用xml來控制,在頂級目錄下建一個build.xml文件,內容如下
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="My Sample Suite"> <test name="First test"> <classes> <class name="cases.CaseOne"></class> </classes> </test> <test name="Second test"> <classes> <class name="cases.CaseTwo"></class> </classes> </test> <test name="Third test"> <classes> <class name="cases.CaseThree"></class> </classes> </test> </suite> 這是按類寫的,當然你可以寫的更詳細,指定方法 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="My Sample Suite"> <test name="First test"> <classes> <class name="cases.CaseOne"></class> <methods> <include name="method1"/> <include name="method2"/> </methods> </classes> </test> <test name="Second test"> <classes> <class name="cases.CaseTwo"></class> </classes> </test> <test name="Third test"> <classes> <class name="cases.CaseThree"></class> </classes> </test> </suite> |
這樣類CaseOne中的第三個方法會掠過去不執行。
總結:
在我看來,TestNG是一個非常好用的測試框架,其測試步驟順序很規范,很強大,當然還有很多東西要去探索。筆者水平較淺,不足之處,大家海涵!
posted on 2014-09-02 09:46 順其自然EVO 閱讀(9845) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄