您的位置:首页 > 编程语言 > Java开发

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

2015-06-30 16:23 1061 查看
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("结束时执行一次");
}

}


对应的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 -->


TestNg 是通过Xml文件管理测试累的,可以看到,每个测试方法都可以看做一条Case,并且开头都有@Test 作为测试标记

更多的TestNg xml管理的例子可以参考:

http://www.cnblogs.com/choosewang/articles/3079983.html

TestNg 主要的就是通过Xml 托管,注释标签调用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: