TestNG监听器用法示例

TestNG提供@Listeners批注, 它侦听硒代码中发生的每个事件。在测试之前或测试用例之后, 将激活监听器。它是修改TestNG行为的接口。例如, 当你通过硒或鸦片运行测试用例时, 突然一个测试用例失败。我们需要失败的测试用例的屏幕截图, 以实现这种情况, TestNG提供了一种机制, 即监听器。当测试用例发生故障时, 它将被重定向到为屏幕截图编写的新块。
监听器由ITestListener接口实现。 ITestListener接口具有以下方法:

TestNG监听器用法示例

文章图片
onTestStart():仅在启动任何测试方法时才调用onTestStart()。
onTestSuccess():onTestSuccess()方法在测试方法成功时执行。
onTestFailure():当测试方法失败时, 将调用onTestFailure()方法。
onTestSkipped():仅当跳过任何测试方法时, 才运行onTestSkipped()。
onTestFailedButWithinSuccessPercentage():每当测试方法失败但在成功百分比之内时, 都会调用此方法。
onStart():onTest()方法在任何测试方法开始时执行。
onFinish():任何测试用例完成执行时, 都会调用onFinish()。
如何创建TestNG监听器 我们可以通过两种方式创建TestNG监听器。首先, 我们可以在类中使用@Listeners批注, 第二种方法是在套件中使用@。
第一种情况:首先, 我们将在类中创建监听器。
步骤1:打开Eclipse。
步骤2:我们创建一个简单的项目。
import org.testng.Assert; import org.testng.annotations.Listeners; import org.testng.annotations.Test; @Listeners(com.srcmini.Listener.class) public class Class1 { @Test public void sum() { int sum=0; int a=5; int b=7; sum=a+b; System.out.println(sum); } @Test public void testtofail() { System.out.println("Test case has been failed"); Assert.assertTrue(false); } }

在上面的代码中, 我们创建了两个测试用例, 即sum()和testtofail()。
Listener.java
package com.srcmini; import org.testng.ITestContext; import org.testng.ITestListener; import org.testng.ITestResult; public class Listener implements ITestListener { @Override public void onTestStart(ITestResult result) { // TODO Auto-generated method stub }@Override public void onTestSuccess(ITestResult result) { // TODO Auto-generated method stub System.out.println("Success of test cases and its details are : "+result.getName()); }@Override public void onTestFailure(ITestResult result) { // TODO Auto-generated method stub System.out.println("Failure of test cases and its details are : "+result.getName()); }@Override public void onTestSkipped(ITestResult result) { // TODO Auto-generated method stub System.out.println("Skip of test cases and its details are : "+result.getName()); }@Override public void onTestFailedButWithinSuccessPercentage(ITestResult result) { // TODO Auto-generated method stub 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 } }

当传递了sum()测试用例后, TestNG会调用onTestSuccess()监听器。当testtofail()测试用例失败时, 则TestNG调用onTestFailure()监听器。
步骤3:现在, 我们创建testng.xml文件。
< ?xml version="1.0" encoding="UTF-8"?> < !DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> < suite name="Suite"> < test name="Listeners"> < classes> < class name="com.srcmini.Class1"> < /class> < /classes> < /test> < /suite> < !-- Suite -->

步骤4:运行testng.xml文件。右键单击testng.xml文件, 然后将光标向下移动到Run As, 然后单击1 TestNG Suite。
TestNG监听器用法示例

文章图片
上面的输出显示sum()测试用例已通过, 并且testtofail()测试用例已失败。
第二种情况:现在, 我们使用testng.xml文件创建监听器。
步骤1:打开Eclipse。
步骤2:我们将创建两个Java项目。一个Java项目包含测试用例, 另一个项目包含监听器。
Testcases.java
package com.srcmini; import org.testng.Assert; import org.testng.annotations.Test; public class Testcases { @Test public void testtopass() { Assert.assertTrue(true); } @Test public void testtofail() { Assert.assertFalse(false); } }

Listener.java
package com.srcmini; import org.testng.ITestContext; import org.testng.ITestListener; import org.testng.ITestResult; public class Listener implements ITestListener { @Override public void onTestStart(ITestResult result) { // TODO Auto-generated method stub } @Override public void onTestSuccess(ITestResult result) { // TODO Auto-generated method stub System.out.println("Success of test cases and its details are : "+result.getName()); } @Override public void onTestFailure(ITestResult result) { // TODO Auto-generated method stub System.out.println("Failure of test cases and its details are : "+result.getName()); } @Override public void onTestSkipped(ITestResult result) { // TODO Auto-generated method stub System.out.println("Skip of test cases and its details are : "+result.getName()); } @Override public void onTestFailedButWithinSuccessPercentage(ITestResult result) { // TODO Auto-generated method stub 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 } }

步骤3:现在, 我们创建testng.xml文件。
testng.xml
< ?xml version="1.0" encoding="UTF-8"?> < !DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> < suite name="Suite"> < listeners> < listener class-name="com.srcmini.Listener"/> < /listeners> < test name="Listeners_program"> < classes> < class name="com.srcmini.Testcases"> < /class> < /classes> < /test> < /suite> < !-- Suite -->

步骤4:运行testng.xml文件。
【TestNG监听器用法示例】输出
TestNG监听器用法示例

文章图片
注意:将监听器添加到多个类时, 可能会容易出错。如果监听器是通过testng.xml文件实现的, 则它们将应用于所有类。

    推荐阅读