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

≯℡__Kan透↙ 提交于 2019-12-06 05:34:32

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管理的例子可以参考: 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!