TestNg JAVA 自动化单元测试框架Demo

TestNg 

TestNg 是java的一个自动化单元测试框架 

参考:http://testng.org/doc/index.html


环境准备 

既然是java 的自动化单元测试框架,就必须要有java的环境了,这里使用的编辑器是Eclipse,已经安装过TestNg 插件,如果环境准备好就可以开始了


代码实例 

代码结构如图 



新建一个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("结束时执行一次");

  }


}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

对应的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 -->

1

2

3

4

5

6

7

8

9

10


使用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("每个方法结束时运行");

    }


}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

对应的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 -->

1

2

3

4

5

6

7

8

9

10

11

12

13


通过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");

    }


}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

对应的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 -->

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

TestNg 是通过Xml文件管理测试累的,可以看到,每个测试方法都可以看做一条Case,并且开头都有@Test 作为测试标记 

更多的TestNg xml管理的例子可以参考: 


猜你喜欢

转载自blog.51cto.com/14529380/2455040