最近看到测试组在搭建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即可。
TestNG下载地址:github-testng,可参考文档【2】。
版本信息:
eclipse:Mars.2 Release (4.5.2)
TestNG:7.4.0.202106051955
下载的TestNG 解压后,两个文件夹,如下图所示。
将 features 和 plugins 分别放到eclipse的安装目录下的 features 和 plugins,其他jar包放到 eclipse 的根目录即可,效果如下图所示。
在 eclipse 的菜单栏 Files -> others -> TestNG,则表示插件安装成功。
新建 Java project 项目,右键 - > Add Library,选择 TestNG,如下图所示。
右键-新建-> others -> 选择 TestNG class,起名字 TestNGTest。
注解
@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,即开始执行测试类。
第一种、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,"比较城市拼写异同");
}
执行结果,两个失败,一个成功,结果如下所示。
第二种、xml形式
在 src 目录下,新建 TestNG.xml 文件,参数放在 parameter 标签内,注意 class 路径为包名+类名,xml 内容如下。
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 运行。
打印输出结果
TestNG测试输出结果如下。
【1】https://github.com/cbeust/testng-eclipse/