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

  1. TestNg
    TestNg 是java的一個自動化單元測試框架
    參考:http://testng.org/doc/index.html

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

  3. 代碼實例
    代碼結構如圖
    這裏寫圖片描述

    新建一個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 -->
    

  4. TestNg 是通過Xml文件管理測試累的,可以看到,每個測試方法都可以看做一條Case,並且開頭都有@Test 作爲測試標記
    更多的TestNg xml管理的例子可以參考:
    http://www.cnblogs.com/choosewang/articles/3079983.html
    TestNg 主要的就是通過Xml 託管,註釋標籤調用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章