最近看到测试组在搭建TestNG框架,周末在家,本地搭建,方便备查。

测试是程序上线的最后一道关,关于测试的三个重要观点。
1)测试是为了证明程序有错,而不是证明程序无错误;
2)一个好的测试用例是在于它能发现至今未发现的错误;
3)一个成功的测试是发现了至今未发现的错误的测试。

TestNG 是开源的Java自动化测试框架。
反射 即将Java类中的各种成分映射成一个个的Java对象

Student stu = new Student();
// 方式一、通过Object类的getClass方法
Class cla = stu.getClass();
// 方式二、通过类的静态成员变量获取对象
Class cla = Student.class;
// 方式三、通过Class.forName方式
Class cla = Class.forName("xx.xx.stu");

以 eclipse 编译器为例,下面介绍安装和使用的过程。

第一步、安装插件

主要有在线和离线两种安装方式

方式一、在线安装

在 编辑栏help -> Install New Software,在弹出窗体输入(http://beust.com/eclipse)内容,会自动搜索testng 插件,点击OK即可。

Java自动化测试输入表格 java自动化测试用例_eclipse

方式二、离线下载

TestNG下载地址:github-testng,可参考文档【2】。

版本信息:

eclipse:Mars.2 Release (4.5.2)

TestNG:7.4.0.202106051955

下载的TestNG 解压后,两个文件夹,如下图所示。

Java自动化测试输入表格 java自动化测试用例_unit testing_02


featuresplugins 分别放到eclipse的安装目录下的 features 和 plugins,其他jar包放到 eclipse 的根目录即可,效果如下图所示。

Java自动化测试输入表格 java自动化测试用例_Java自动化测试输入表格_03


在 eclipse 的菜单栏 Files -> others -> TestNG,则表示插件安装成功。

Java自动化测试输入表格 java自动化测试用例_eclipse_04

第二步、新建项目

新建 Java project 项目,右键 - > Add Library,选择 TestNG,如下图所示。

Java自动化测试输入表格 java自动化测试用例_unit testing_05

第三步、新建TestNG测试类

右键-新建-> others -> 选择 TestNG class,起名字 TestNGTest。

Java自动化测试输入表格 java自动化测试用例_Java自动化测试输入表格_06

注解
@BeforeTest 测试方法运行前执行
@AfterTest 测试方法执行后执行

简单测试类代码如下所示。

import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class TestNGTest {
  @Test
  public void f() {
  }
  
  @BeforeTest
  public void before(){
	  System.err.println("before执行完毕");
  }
  
  @AfterTest
  public void after(){
	  System.err.println("after执行完毕");
  }
}

在测试类 空白处 右键 - Run As - > TestNG Test,即开始执行测试类。

Java自动化测试输入表格 java自动化测试用例_java_07

第四步、参数传递

第一种、DataProvider 注解方式
DataProvider 注解定义数组,@Test 可获取到数组的值,进行使用。样例验证数组中的两个值是否一致,代码如下所示。

@DataProvider()
  public Object[][]citys(){
	  return new Object[][]{
		  {"BJ","Beijing"},
		  {"shanghai","shanghai"},
		  {"sz","Shenzhen"}
	  };
  }
  
  @Test(dataProvider="citys")
  public void testEqual(String city,String spail){
	  Assert.assertEquals(city, spail,"比较城市拼写异同");
  }

执行结果,两个失败,一个成功,结果如下所示。

Java自动化测试输入表格 java自动化测试用例_java_08


第二种、xml形式

在 src 目录下,新建 TestNG.xml 文件,参数放在 parameter 标签内,注意 class 路径为包名+类名,xml 内容如下。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suit1">
	<parameter name="TianJing" value="TianJing"/>
	<parameter name="ShanDong" value="ShanDong"/>
	<test name="TestXml01">
		<classes>
			<!-- 包名+类名-->
			<class name="org.henu.testng.TestNGTest" />
		</classes>
	</test>
</suite>

在测试类中用 parameter 标签接收参数,代码如下所示。

@Test
  @Parameters({"TianJing","ShanDong"})
  public void testXml(String city,String city1){
	  System.out.println("city的值为:"+city);
	  System.out.println("city1的值为:"+city1);
	  Assert.assertEquals(city, "TianJing","比较城市拼写异同");
  }

在 TestNG.xml 文件,右键 -> Run As -> 选择 TestNG Suite 运行。

Java自动化测试输入表格 java自动化测试用例_unit testing_09


打印输出结果

Java自动化测试输入表格 java自动化测试用例_java_10


TestNG测试输出结果如下。

Java自动化测试输入表格 java自动化测试用例_eclipse_11

参考文档

【1】https://github.com/cbeust/testng-eclipse/