TestNG设计涵盖所有类型的测试:单元,功能,端到端,集成等,它需要JDK5或更高的JDK版本。 TestNG是一个开源自动化测试框架;其灵感来自JUnit和NUnit的
TestNG环境设置(配置安装)TestNG是一个Java的框架,所以第一个要求是JDK要安装在你的机器上。 系统要求 JDK 1.5或以上 内存 没有最低要求 磁盘空间 没有最低要求 操作系统 没有最低要求 步骤1 -验证Java安装在你的 - 易百教程https://www.yiibai.com/html/testng/2013/0914293.html
Testng安装
1、安装配置java环境。
2、下载TestNG中-6.8.jar
3、设置环境变量。
jar包地址
并在ClassPath中添加 ;%TESTNG_HOME%\testng-6.8.jar;
测试testng配置
创建一个Java类文件名TestNGSimpleTest??
import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
public class TestNGSimpleTest {
@Test
public void testAdd() {
String str = "TestNG is working fine";
assertEquals("TestNG is working fine", str);
}
}
创建一个XML文件名称testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1">
<test name="test1">
<classes>
<class name="TestNGSimpleTest"/>
</classes>
</test>
</suite>
类编译使用javac编译如下:
C:\TestNG_WORKSPACE>javac TestNGSimpleTest.java
执行testng.xml
java org.testng.TestNG testng.xml
在testng.xml文件中写要执行的单元测试类名。
testng注释
注解 | 描述 |
---|
@BeforeSuite | 注解的方法将只运行一次,运行在一个suite的所有测试用例之前。 | @AfterSuite | 注解的方法将只运行一次,运行在一个suite的所有测试用例之后 | @BeforeClass | 运行在一个类前 | @AfterClass | 运行在一个类后 | @BeforeTest | 在一个test标签内之前运行。(在class注释之前运行) | @AfterTest | 在一个test标签内之后运行。 | @BeforeGroups | 组的列表,这种配置方法将之前运行。此方法是保证在运行属于任何这些组第一个测试方法,该方法被调用。 | @AfterGroups | 组的名单,这种配置方法后,将运行。此方法是保证运行后不久,最后的测试方法,该方法属于任何这些组被调用。 | @BeforeMethod | 在每个测试方法之前运行 | @AfterMethod | 在每个测试方法之后运行 | @DataProvider | 标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。 该@Test?方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。 | @Factory | 作为一个工厂,返回TestNG的测试类的对象将被用于标记的方法。该方法必须返回Object[]。 | @Listeners | 定义一个测试类的监听器。 | @Parameters | 介绍如何将参数传递给@Test方法。 | @Test | 标记一个类或方法作为测试的一部分。 |
?执行单元测试类
创建一个类
创建一个Java类进行测试为 MessageUtil.java 在 C:\ > TestNG_WORKSPACE
/*
* This class prints the given message on console.
*/
public class MessageUtil {
private String message;
//Constructor
//@param message to be printed
public MessageUtil(String message){
this.message = message;
}
// prints the message
public String printMessage(){
System.out.println(message);
return message;
}
}
创建测试例类
创建一个Java测试类 SampleTest.java
您的测试类添加一个的测试方法testPrintMessage()
添加注释@Test 到方法 testPrintMessage()
实现测试条件和使用的assertEquals API TestNG的检查条件
创建一个Java类文件名 SampleTest.java在 C:\ > TestNG_WORKSPACE
import org.testng.Assert;
import org.testng.annotations.Test;
public class SampleTest {
String message = "Hello World";
MessageUtil messageUtil = new MessageUtil(message);
@Test
public void testPrintMessage() {
Assert.assertEquals(message, messageUtil.printMessage());
}
}
创建 testng.xml
接下来,让我们创建testng.xml文件在 C:\ > TestNG_WORKSPACE 执行测试用例,此文件捕获整个测试XML。这个文件可以很容易地描述所有的测试套件和它们的参数在一个文件中,你可以检查你的代码库或e-mail给同事。这也使得它容易提取测试或分裂的几个运行时配置的子集(例如,TestNG的database.xml 只能运行测试,行使数据库)。
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Sample test Suite">
<test name="Sample test">
<classes>
<class name="SampleTest" />
</classes>
</test>
</suite>
情况下使用javac编译测试
C:\TestNG_WORKSPACE>javac MessageUtil.java SampleTest.java
现在,运行这个 testng.xml,将运行中定义的测试用例 <test> 标签
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
验证输出。
Hello World
===============================================
Sample test Suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================
忽略方法?
测试方法是标注了@Test(enabled = false),在测试执行时忽略。
组测试
创建一个Java类进行测试为 MessageUtil.java 在 C:\ > TestNG_WORKSPACE
/*
* This class prints the given message on console.
*/
public class MessageUtil {
private String message;
// Constructor
// @param message to be printed
public MessageUtil(String message) {
this.message = message;
}
// prints the message
public String printMessage() {
System.out.println(message);
return message;
}
// add "tutorialspoint" to the message
public String salutationMessage() {
message = "tutorialspoint" + message;
System.out.println(message);
return message;
}
// add "www." to the message
public String exitMessage() {
message = "www." + message;
System.out.println(message);
return message;
}
}
创建Java类文件名 GroupTestExample.java 在 C:\ > TestNG_WORKSPACE
import org.testng.Assert;
import org.testng.annotations.Test;
public class GroupTestExample {
String message = ".com";
MessageUtil messageUtil = new MessageUtil(message);
@Test(groups = { "functest", "checkintest" })
public void testPrintMessage() {
System.out.println("Inside testPrintMessage()");
message = ".com";
Assert.assertEquals(message, messageUtil.printMessage());
}
@Test(groups = { "checkintest" })
public void testSalutationMessage() {
System.out.println("Inside testSalutationMessage()");
message = "tutorialspoint" + ".com";
Assert.assertEquals(message, messageUtil.salutationMessage());
}
@Test(groups = { "functest" })
public void testingExitMessage() {
System.out.println("Inside testExitMessage()");
message = "www." + "tutorialspoint"+".com";
Assert.assertEquals(message, messageUtil.exitMessage());
}
}
创建一个文件 testng.xml?C:\ > TestNG_WORKSPACE?来执行测试用例,在这里,我们将只执行这些测试,属于组functest。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1">
<test name="test1">
<groups>
<run>
<include name="functest" />
</run>
</groups>
<classes>
<class name="GroupTestExample" />
</classes>
</test>
</suite>
组中组
组也可以包含其他组。这些组称为MetaGroups。例如,您可能希望定义一个组中的所有,包括checkintest和functest。让我们修改testng.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1">
<test name="test1">
<groups>
<define name="all">
<include name="functest"/>
<include name="checkintest"/>
</define>
<run>
<include name="all"/>
</run>
</groups>
<classes>
<class name="GroupTestExample" />
</classes>
</test>
</suite>
这里是定义了functest和checkintest都属于all,如果不定义,run里只包括all,是不执行任何用力的。
排斥组
可以忽略一个组使用<exclude>标签,如下图所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1">
<test name="test1">
<groups>
<define name="all">
<exclude name="functest"/>
<include name="checkintest"/>
</define>
<run>
<include name="all"/>
</run>
</groups>
<classes>
<class name="GroupTestExample" />
</classes>
</test>
</suite>
TestNG异常测试
TestNG跟踪异常处理代码提供了一个选项。可以测试是否需要代码抛出异常或不抛出。 @Test注释expectedExceptions 参数一起使用。
TestNG依赖测试
TestNG允许指定依赖,无论与否:
TestNG参数化测试
方法一:添加注释?@Parameters("myName")
方法二:@DataProvider
TestNG运行JUnit测试
TestNG可以兼容运行JUnit
TestNG测试结果报告
TestNG默认情况下,会产生不同类型的测试执行报告。这包括HTML和XML报表输出。 TestNG的还允许用户自己写的报告,并用它使用TestNG。还有一个选项来写你自己的记录器,在运行时通过TestNG的通知。
?
|