一.testNG介绍

     TestNG是Java中的一个测试框架, 类似于JUnit 和NUnit,   功能都差不多, 只是功能更加强大,使用也更方便

Java中已经有一个JUnit的测试框架了。  TestNG比JUnit功能强大的多。  测试人员一般用TestNG来写自动化测试。  开发人员一般用JUnit写单元测试。

官方网站: http://testng.org/doc/index.html

二、TestNG的优点

  2.1 漂亮的HTML格式测试报告

  2.2 支持并发测试

  2.3 参数化测试更简单

  2.4 支持输出日志

  2.5 支持更多功能的注解

三、编写TestNG测试用例的步骤

  3.1 使用 Eclipse生成TestNG的测试程序框架

  3.2 在生成的程序框架中编写测试代码逻辑

  3.3 根据测试代码逻辑,插入TestNG注解标签

  3.4 配置Testng.xml文件,设定测试类、测试方法、测试分组的执行信息

  3.5 执行TestNG的测试程序

四、TestNG安装使用

工程的pom.xml中添加如下内容即可:

        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.10</version>
        </dependency>

示例代码:

package com.huaxi.huaxitest;

import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;


public class TestNGCase {

    @BeforeClass
    public void testBefore() throws Exception{
        System.out.println("this is before class");
    }

    @Test
    public void test002() throws Exception{
        System.out.println("this is TestNG test case");
    }

    @AfterClass
    public void testAfter() throws Exception{
        System.out.println("this is after class");
    }

}

运行结果截图:

自动化框架:IntelliJ IDEA+TestNG+maven_测试方法

五、TestNG常用注解

注解

描述

@BeforeSuite

注解的方法将只运行一次,运行所有测试前此套件中。

@AfterSuite

注解的方法将只运行一次此套件中的所有测试都运行之后。

@BeforeClass

注解的方法将只运行一次先行先试在当前类中的方法调用。

@AfterClass

注解的方法将只运行一次后已经运行在当前类中的所有测试方法。

@BeforeTest

注解的方法将被运行之前的任何测试方法属于内部类的 <test>标签的运行。

@AfterTest

注解的方法将被运行后,所有的测试方法,属于内部类的<test>标签的运行。

@BeforeGroups

组的列表,这种配置方法将之前运行。此方法是保证在运行属于任何这些组第一个测试方法,该方法被调用。

@AfterGroups

组的名单,这种配置方法后,将运行。此方法是保证运行后不久,最后的测试方法,该方法属于任何这些组被调用。

@BeforeMethod

注解的方法将每个测试方法之前运行。

@AfterMethod

被注释的方法将被运行后,每个测试方法。

@DataProvider

标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。

该@Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。

@Factory

作为一个工厂,返回TestNG的测试类的对象将被用于标记的方法。该方法必须返回Object[]。

@Listeners

定义一个测试类的监听器。

@Parameters

介绍如何将参数传递给@Test方法。

@Test

标记一个类或方法作为测试的一部分。

 六、TestNG忽略测试

不想运行某个用例时,可以在测试用例加上@Test(enable = false),  来禁用此测试用例

package com.huaxi.huaxitest;

import org.testng.annotations.Test;


public class TestNGCase {

    @Test
    public void test001() throws Exception{
        System.out.println("this is TestNG test case");
    }
    
    @Test(enabled = false)
    public void test002() throws Exception{
        System.out.println("忽略这个用例");
    }

}

七、TestGN分组测试

package com.huaxi.huaxitest;

import org.testng.annotations.Test;


public class TestNGCase {

    @Test(groups = "group1")
    public void test001() throws Exception{
        System.out.println("一组用例");
    }
    

    @Test(groups = "group2")
    public void test002() throws Exception{
        System.out.println("二组用例");
    }

}

 

testNG测试报告结果