qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          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的方法如圖
            會有小error,這是因為我們還沒有將TestNG加入到我們的LIB中來,點擊錯誤,會有import Library的選項,點擊便有了,如圖
            最后
            可見方法method1寫好了,在method里加一句
            System.out.println("**********method1*********");
            執行程序可以看到Console里打印了**********method1*********,接下來加入更多的方法
            執行以上代碼,程序將從上到下執行三個帶有@Test的方法。結果
            我們可以對這三個方法建立倚賴,所有后面的都建立在之前的case通過的情況下,標注是這樣寫的
           這樣前面的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)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 安吉县| 泾川县| 什邡市| 宜春市| 株洲市| 论坛| 成都市| 沂源县| 东辽县| 绩溪县| 泸溪县| 邻水| 龙州县| 合水县| 贞丰县| 上林县| 思南县| 伊通| 赫章县| 桑植县| 安国市| 屯留县| 张家川| 博客| 盐边县| 清徐县| 平罗县| 涟源市| 牙克石市| 都匀市| 油尖旺区| 九寨沟县| 绥芬河市| 榕江县| 宁海县| 叙永县| 南宁市| 从江县| 湘乡市| 云浮市| 衡山县|