- TestNG 教程
- TestNG - 首页
- TestNG - 概述
- TestNG - 环境
- TestNG -编写测试
- TestNG - 基本注解
- TestNG - 执行过程
- TestNG - 执行测试
- TestNG - 套件测试
- TestNG - 忽略测试
- TestNG - 组测试
- TestNG - 异常测试
- TestNG - 依赖测试
- TestNG - 参数化测试
- TestNG - 运行JUnit测试
- TestNG - 测试结果
- TestNG - 注解转换器
- TestNG - 断言
- TestNG - 并行执行
- TestNG - 与ANT集成
- TestNG - 与Eclipse集成
- TestNG - TestNG vs JUnit
- TestNG 有用资源
- TestNG - 快速指南
- TestNG - 有用资源
- TestNG - 讨论
TestNG - 基本注解 - 监听器
@Listeners 注解定义了测试类上的监听器。@Listeners 注解的方法监听某些事件,并在测试执行的每个阶段执行某些操作的同时跟踪测试执行情况。事件可以是任何内容,例如测试方法的成功、测试方法的失败、测试方法的开始等。
以下是一些允许您修改 TestNG 行为的监听器或接口
IAnnotationTransformer
IAnnotationTransformer2
IHookable
IInvokedMethodListener
IMethodInterceptor
IReporter
ISuiteListener
ITestListener
@Listeners 可以实现于 *类级别* 和 *套件级别*
以下是 @Listeners 注解支持的属性列表
属性 | 描述 |
---|---|
value |
扩展 org.testng.ITestNGListener 的类的数组 |
创建测试用例类
让我们看看如何使用 TestNG 监听器调用测试方法。
创建一个 Java 测试类,例如,在 /work/testng/src 中创建 SimpleTestClass.java。
向您的测试类添加测试方法 sum() 和 testtofail()。
向 sum() 和 testtofail() 方法添加注解 @Test。
以下是 SimpleTestClass.java 的内容
import org.testng.Assert; import org.testng.annotations.Test; public class SimpleTestClass { @Test public void sum() { int sum=0; int a=15; int b=27; sum=a+b; System.out.println("sum="+sum); } @Test public void testtofail() { System.out.println("Test case has failed"); Assert.assertTrue(false); } }
创建监听器测试类
创建一个另一个 Java 类,例如,在 /work/testng/src 中创建 TestListener.java。我们将实现 ITestListener。
ITestListener 包含以下方法
onTestStart - 当任何测试开始时调用 onTestStart 方法。
onTestSuccess - 当任何测试成功时调用 onTestSuccess 方法。
onTestFailure - 当任何测试失败时调用 onTestFailure 方法。
onTestSkipped - 当任何测试被跳过时调用 onTestSkipped 方法。
onTestFailedButWithinSuccessPercentage - 每次测试失败但在成功百分比范围内时调用此方法。
onFinish - 在所有测试执行完毕后调用 onFinish 方法。
TestListener.java 如下所示
import org.testng.ITestContext; import org.testng.ITestListener; import org.testng.ITestResult; public class TestListener implements ITestListener { @Override public void onTestStart(ITestResult result) { } @Override public void onTestSuccess(ITestResult result) { System.out.println("Success of test cases and its details are : "+result.getName()); } @Override public void onTestFailure(ITestResult result) { System.out.println("Failure of test cases and its details are : "+result.getName()); } @Override public void onTestSkipped(ITestResult result) { System.out.println("Skip of test cases and its details are : "+result.getName()); } @Override public void onTestFailedButWithinSuccessPercentage(ITestResult result) { System.out.println("Failure of test cases and its details are : "+result.getName()); } @Override public void onStart(ITestContext context) { // TODO Auto-generated method stub } @Override public void onFinish(ITestContext context) { // TODO Auto-generated method stub } }
创建 testng.xml
接下来,让我们在 /work/testng/src 中创建 testng.xml 文件来执行测试用例。此文件以 XML 格式捕获您的整个测试过程。此文件使您可以轻松地在单个文件中描述所有测试套件及其参数,您可以将其检入代码存储库或通过电子邮件发送给同事。它还可以轻松提取测试子集或拆分多个运行时配置(例如,testngdatabase.xml 只运行测试您的数据库的测试)。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd"> <suite name="Suite"> <listeners> <listener class-name="TestListener"/> </listeners> <test thread-count="5" name="Test"> <classes> <class name="SimpleTestClass"/> </classes> </test> <!-- Test --> </suite> <!-- Suite -->
如您所见,我们需要在此 XML 文件中定义监听器。
使用 javac 编译测试用例。
/work/testng/src$ javac SimpleTestClass.java TestListener.java
现在,运行 testng.xml,这将运行在 <test> 标签中定义的测试用例。
/work/testng/src$ java org.testng.TestNG testng.xml
验证输出。
sum=42 Success of test cases and its details are : sum Test case has failed Failure of test cases and its details are : testtofail =============================================== Suite Total tests run: 2, Passes: 1, Failures: 1, Skips: 0 ===============================================