蝸牛的私房菜-TestNg_第1頁
蝸牛的私房菜-TestNg_第2頁
蝸牛的私房菜-TestNg_第3頁
蝸牛的私房菜-TestNg_第4頁
蝸牛的私房菜-TestNg_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、引子古人云:蝸牛也是牛話說最近幾天半年會開的一個半勁,看到大家一個個捧著大獎和NS帥的掉灣的最帥哥合影,幸福的像花兒一樣,本牛內(nèi)心頗不平靜。人家鳥哥的私房菜都第三版了,本牛作為一個工作多年的新人還在原地打轉(zhuǎn),輾轉(zhuǎn)反側(cè),難以入睡,終于在數(shù)了一千只羊之后,做出一個沉重的決定:我得寫點(diǎn)東西。為了那閃耀著萬丈光芒的最佳新人獎,啊不,哪怕最佳新人提名獎也好,也為了阿炳同學(xué)求知的精神,更為了質(zhì)量部QA新人的質(zhì)量。我是一個PHP的菜鳥,Mysql也只是會使用,所以我寫的這些東西大多是以Java作為首選語言,但有些東西作為通用的思想是不受語言限制的。萬事開頭難,其實(shí)開過頭后也不容易。測試方面的技術(shù)好多啊,多的

2、像天上的繁星,一/K.仁.四個在有限的時(shí)間里,想做最多的了解,只能從最實(shí)用的著手,去除教條式的金科玉律。于是,一個切入點(diǎn)蹦了出來,那就是介紹號稱下一代Java測試技術(shù)的TestNG其實(shí)這個nextgeneration也只是相對于Junit3.8這個版本,在這個版本發(fā)布5年之后,從TestNG中借鑒了許多概念的Junit4才發(fā)行,所以了解TestNG同樣有助于學(xué)習(xí)Junit及Unit系列的眾多分支。軟件開發(fā)是一項(xiàng)風(fēng)險(xiǎn)事業(yè)。測試則是緩解項(xiàng)目風(fēng)險(xiǎn)最重要的手段之一。一般來說,我們應(yīng)該讓需求可測試,讓測試自動化,讓自動化測試變的容易。理念一定要先進(jìn),工具一定要先進(jìn)。將這些先進(jìn)的理念和工具應(yīng)用于項(xiàng)目中,提

3、高生產(chǎn)效率,這就是創(chuàng)新的意義所在。g明:本段不是原創(chuàng)?。?、 簡介TestNG是一個測試框架,不僅僅用來做單元測試,還包括集成測試。利用注解(annotation)來標(biāo)注測試類。2、 和Junit3.8的區(qū)另I4.4 .測試方法的名字不必以test開始,命名靈活;5.5 .測試方法可以返回值,不必是void的;6.6 .測試方法可以傳入?yún)?shù);7.7 .測試類不必從TestCase中繼承;8.8 .除了提供了BeforMethod和AfterMethod這些在測試方法之前和之后的調(diào)用的外,還有BeforeClass、AfterClass、BeforTest、AfterTest等調(diào)用;9.9 .提

4、供了依賴關(guān)系測試;10.10 .對測試方法進(jìn)行分組;11.11 .對異常的測試;3、 詳細(xì)介紹測試、套件和配置annotationTestNG在testng.xml中來描述和配置測試,包括配suite,test,group(includeandexclude某些組),class,method(includeandexclude某些測試方法),還包括package的指定。一個典型testng.xml內(nèi)容如下:<!DOCTYPEsuiteSYSTEM"http:/testng.Org/testng-1.0.dtd"><suitename="Suite

5、1"verbose="1"><testname="NOpackage"><classes><classname="NoPackageTest”/></classes></test><testname="Regression1"><classes><classname="test.sample.ParameterSample"/><classname="test.sample.Pa

6、rameterTest"/></classes></test></suite>術(shù)語:一個suite(套件)由一個或者多個測試組成;一個test(測試)由一個或者多個類組成;一個class(類)由一個或者多個方法組成;配置annotation是指所有以86砧伯和人他開頭的annotation0這些方法定義了TestNG生命周期中的事件,提供了一種靈活的、分層的方式來完成測試的初始化和清理工作。TestNG類的配置信息:BeforeSuite:被注解的方法,會在當(dāng)前suite中所有測試方法之前被調(diào)用。AfterSuite:被注解的方法,會在當(dāng)前s

7、uite中所有測試方法之后被調(diào)用。BeforeTest被注解的方法,會在測試(原文就是測試,不是測試方法)運(yùn)行前被調(diào)用AfterTest被注解的方法,會在測試(原文就是測試,不是測試方法)運(yùn)行后被調(diào)用BeforeGroups被注解的方法會在組列表中之前被調(diào)用。這個方法會在每個組中第一個測試方法被調(diào)用之前被調(diào)用。AfterGroups:被注解的方法會在組列表中之后被調(diào)用。這個方法會在每個組中最后一個測試方法被調(diào)用之后被調(diào)用。BeforeClass被注解的方法,會在當(dāng)前類第一個測試方法運(yùn)行前被調(diào)用AfterClass被注解的方法,會在當(dāng)前類所有測試方法運(yùn)行后被調(diào)用BeforeMethod:被注解的

8、方法,會在運(yùn)行每個測試方法之前調(diào)用AfterMethod:被注解的方法,會在每個測試方法運(yùn)行之后被調(diào)用重新執(zhí)行失敗的case在實(shí)際的測試工作中會遇到需要重新執(zhí)行失敗的case的情況,這個在TestNG中提供了很好的支持,只需要在TestNG的輸出目錄(默認(rèn)是test-output/)下執(zhí)行自動生成的一個名為testng-failded.xml的文件。這個xml文件包含了原來的testng.xml中所有失敗的case給測試方法傳遞參數(shù)利用testng.xml傳遞參數(shù)在testng.xml文件中,使用parameter節(jié)點(diǎn)在s3te或者test層指定參數(shù)。如果在suite和test層都指定某一個參

9、數(shù)的值,suite的優(yōu)先級會比test的要高,test中參數(shù)的值會被覆蓋,在測試方法中會讀取suite中這個參數(shù)的value。Testng.xml中內(nèi)容如下:<suitename="MavenAndTestng"><!-Parametersetting:參數(shù)可以在配置文件的suite和test之后定義,而如果兩個參數(shù)的名稱一樣,test中定義的參數(shù)值有較高的優(yōu)先級。-><parametername="xml-file"value="accounts.xml"/><parametername=&

10、quot;hostname"value=""/><parametername="printPara"value="HelloWord11111111111111"/><testverbose="2"name="a"annotations="JDK"><parametername="hostname"value=""/><classes><classname="

11、;testcases.TestCal"/><classname="testcases.TestPrint"/></classes></test></suite>在測試方法中調(diào)用參數(shù):TestParameters("hostname","xml-file")privatevoidparaTest(StringhostName,StringxmlFile)System.out.println(hostName);System.out.println(xmlFile);)Tes

12、tNG自動將testng.xml中的值轉(zhuǎn)換為參數(shù)的類型。下面是支持的類型:Stringint/Integerboolean/Booleanbyte/Bytechar/Characterdouble/Doublefloat/Floatlong/Longshort/Short如果犯了一下錯誤之一,TestNGa拋出一個異常:.在testng.xml中定義了一個參數(shù),但不能轉(zhuǎn)換成對應(yīng)方法的參數(shù)的類型;.測試方法中調(diào)用的參數(shù)在testng.xml中沒有定義;通過testng.xml傳遞參數(shù)簡單且明確,并且修改參數(shù)后不要從新編譯代碼,但是有一些局限。比如需要傳遞的參數(shù)不是基本的java類型,或者參數(shù)的值

13、只能在運(yùn)行時(shí)才創(chuàng)建,那么我們應(yīng)該考慮使用DataProvider)3.3.2利用DataProvider傳遞參數(shù)使用這種方式傳遞參數(shù)的好處:.可以向測試方法傳遞任意類型的參數(shù);.多個測試方法可以共用一個參數(shù)組合;.把同一個測試方法的參數(shù)提取成參數(shù)組合,可以減少代碼冗余;示例:DataProvider(name="TestAddParam")privateObjectdataValues()returnnewObject口口1,1,2,2,3,3,4,4;Test(dataProvider="TestAddParam")privatevoidTestAdd

14、(inta,intb)System.out.print("addwithparam:"+a+"+"+b);intresult=cal.add(a,b);System.out.println("="+result);Assert.assertEquals(result,a+b);利用TestNg進(jìn)行依賴測試TestNG通過丁6$1的兩個屬性(dependsOnGroups和dependsOnMethods)來支持依賴測試。示例:Test(groups="Check_test")/runasagroupprivatev

15、oidCheckSelect()booleanselect=false;if(select)Assert.assertTrue(select);)elseAssert.fail("SelectFail");)Test(dependsOnMethods="CheckSelect")publicvoidTestMul()intresult=cal.mul(2,5);Assert.assertEquals(result,10);)Test(dependsOnGroups="Check_test")publicvoidTestDev()Sys

16、tem.out.println("Mul");intresult=cal.dev(10,2);Assert.assertEquals(result,5);)分組測試在TestNG可以通過Tes©group屬性指定一個測試方法或者一個測試類屬于一個或者多個組。示例:.一個方法屬于多個組:Test(groups="group1","group2")privatevoidCheckSelect().指定一個類所有方法的分組:Test(groups="group3")publicclassATestPublicv

17、oidtest1()/這個方法屬于group3).類的分組和方法的分組交織的情況Test(groups="group3")publicclassATestpublicvoidtest1()/這個方法屬于group3Test(groups="group4")publicvoidtest1()/這個方法同時(shí)屬于group3和group4一些分組規(guī)則的建議:.按照測試類型:單元測試、功能測試、集成測試、系統(tǒng)測試、驗(yàn)收測試、性能測試;.按照測試規(guī)模:小規(guī)模、中規(guī)模、大規(guī)模;.按照功能描述:webui、html、js、database;.按照測試速度:慢測試、快測試;.按照過程描述:冒煙測試、里程碑測試、發(fā)布測試;.按照平

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論