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

  1. TestNg

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

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

  2. 环境准备

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

  3. 代码实例

    代码结构如图

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

    新建一个java项目,之后添加一个TestNg类,之后会生成一个测试类,和一个xml文件

    (如果发现TestNg编辑是出错,无法调用TestNg的标签函数,那么导入TestNg.jar.可以右键点击项目,之后BuildPath ->add Libary->选择TestNg 即可)

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




    简单地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 托管,注释标签调用

版权声明:本文为博主原创文章,未经博主允许不得转载。

上一篇:前端开发自动化工作流工具,JavaScript自动化构建工具grunt、gulp、webpack介绍


下一篇:Shell从入门到精通进阶之三:表达式与运算符