1. 程式人生 > >TestNg JAVA 自動化單元測試框架Demo

TestNg JAVA 自動化單元測試框架Demo

  1. 環境準備
    既然是java 的自動化單元測試框架,就必須要有java的環境了,這裡使用的編輯器是Eclipse,已經安裝過TestNg 外掛,如果環境準備好就可以開始了

  2. 程式碼例項
    程式碼結構如圖
    這裡寫圖片描述

    新建一個java專案,之後新增一個TestNg類,之後會生成一個測試類,和一個xml檔案
    (如果發現TestNg編輯是出錯,無法呼叫TestNg的標籤函式,那麼匯入TestNg.jar.可以右鍵點選專案,之後BuildPath ->add Libary->選擇TestNg 即可)
    這裡寫圖片描述


    簡單地TestNg類
    package TestNgDemo;
    //使用TestNg 測試框架
    import org.testng.Assert; import org.testng.annotations.Test; import org.testng.annotations.BeforeClass; import org.testng.annotations.AfterClass; public class NewTest { //測試開始前執行一次 @BeforeClass public void beforeClass() { System.out.println("開始前執行一次"); } @Test public void case1
    () { System.out.println("case1"); } @Test public void case2() { int a = 2; int b = 3; int sum = a+b; Assert.assertEquals(sum, 5, "Result Error"); System.out.println("case2"); } //測試結束時執行一次 @AfterClass public void afterClass() { System.out.println("結束時執行一次"
    ); } }

    對應的Xml配置檔案(TestNg 都是通過註釋標籤,有點類似Junit,並且通過xml檔案託管):

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="Suite" parallel="false">
      <test name="Test">
        <classes>
          <class name="TestNgDemo.NewTest"/>
        </classes>
      </test> <!-- Test -->
    </suite> <!-- Suite -->
    

    使用TestNg Xml 進行資料驅動傳遞引數
    package TestNgDemo;
    //使用TestNg 傳遞引數
    
    
    import org.testng.annotations.Parameters;
    import org.testng.annotations.Test;
    import org.testng.annotations.BeforeMethod;
    import org.testng.annotations.AfterMethod;
    
    public class NewTest2 {
    
        @BeforeMethod
        public void beforeMethod() {
            System.out.println("每個方法執行時執行");
        }
    
        //通過Parameters 獲取Xml 中指定的引數
        @Parameters({"name","age"})
        @Test
        public void case1(String name,int age) {
    
            System.out.println("case1 Name is"+ name);
            System.out.println("case1 Age is"+ age);
    
        }
    
    
        @Test
        public void case2() {
    
            System.out.println("case2");
        }
    
    
    
        @AfterMethod
        public void afterMethod() {
            System.out.println("每個方法結束時執行");
        }
    
    }
    

    對應的xml如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="Suite" parallel="false">
    
        <parameter name="name" value="TestName" />
        <parameter name="age" value="55" />
    
      <test name="Test">
        <classes>
          <class name="TestNgDemo.NewTest2"/>
        </classes>
      </test> <!-- Test -->
    </suite> <!-- Suite -->

    通過xml設定分組,執行不同的case
    package TestNgDemo;
    //TestNg  分組執行
    
    import org.testng.annotations.AfterMethod;
    import org.testng.annotations.BeforeMethod;
    import org.testng.annotations.Parameters;
    import org.testng.annotations.Test;
    import org.testng.annotations.BeforeClass;
    import org.testng.annotations.AfterClass;
    
    public class NewTest3 {
    
        @BeforeMethod
        public void beforeMethod() {
            System.out.println("Begain");
        }
    
        @Parameters({"name","age"})
        @Test(groups="CaseGroup1")
        public void case1(String name,int age) {
    
            System.out.println("case1 Name is"+ name);
            System.out.println("case1 Age is"+ age);
    
        }
    
    
        @Test(groups="CaseGroup2")
        public void case2() {
    
            System.out.println("case2");
        }
    
    
    
        @AfterMethod
        public void afterMethod() {
            System.out.println("End");
        }
    
    }
    

    對應的xml檔案如下,需要執行那個組的時候,就可以直接更改:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="Suite" parallel="false">
    
        <parameter name="name" value="TestName" />
        <parameter name="age" value="55" />
    
    
      <test name="Test">
    
    
      <grroup>
        <define name = CaseGroup1/>
        <define name = CaseGRoup2/>
    
        <run>
            <include name = CaseGroup1/>
        </run>
    
      </grroup>
        <classes>
          <class name="TestNgDemo.NewTest3"/>
        </classes>
      </test> <!-- Test -->
    </suite> <!-- Suite -->
    
  3. TestNg 是通過Xml檔案管理測試累的,可以看到,每個測試方法都可以看做一條Case,並且開頭都有@Test 作為測試標記
    更多的TestNg xml管理的例子可以參考:
    http://www.cnblogs.com/choosewang/articles/3079983.html
    TestNg 主要的就是通過Xml 託管,註釋標籤呼叫