TestNG - 基本注解 - Listeners
-
简述
@Listeners 注解在测试类上定义侦听器。@Listeners 注释方法侦听某些事件并跟踪测试执行,同时在测试执行的每个阶段执行某些操作。事件可以是任何事情,例如测试方法成功、测试方法失败、测试方法开始等。以下是一些允许您修改 TestNG 行为的侦听器或接口:-
IAnnotationTransformer
-
IAnnotationTransformer2
-
IHookable
-
IInvokedMethodListener
-
IMethodInterceptor
-
IReporter
-
ISuiteListener
-
ITestListener
@Listeners 可以在类级别和套件级别实现以下是@Listeners 注解支持的属性列表:属性 描述 value扩展 org.testng.ITestNGListener 的类数组 -
-
创建测试用例类
让我们看看如何使用 TestNG 侦听器调用测试方法。-
创建一个 java 测试类,比如说, SimpleTestClass.java 在 /work/testng/src.
-
将测试方法 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 类,例如, TestListener.java 在 /work/testng/src. 我们将实现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
接下来,让我们在其中创建 testng.xml 文件 /work/testng/src, 执行测试用例。此文件以 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 ===============================================