📜  TestNG侦听器

📅  最后修改于: 2021-01-11 12:09:56             🧑  作者: Mango

TestNG侦听器

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

侦听器由ITestListener接口实现。 ITestListener接口具有以下方法:

onTestStart():仅在启动任何测试方法时才调用onTestStart()。

onTestSuccess(): onTestSuccess()方法在测试方法成功时执行。

onTestFailure():当测试方法失败时,将调用onTestFailure()方法。

onTestSkipped():仅当跳过任何测试方法时,才运行onTestSkipped()。

onTestFailedButWithinSuccessPercentage():每次测试方法失败但成功百分比以内时,都会调用此方法。

onStart(): onStart()方法在任何测试方法开始时执行。

onFinish():任何测试用例完成执行时,都会调用onFinish()。

如何创建TestNG侦听器

我们可以通过两种方式创建TestNG侦听器。首先,我们可以在类中使用@Listeners批注,第二种方法是使用在套房内。

第一种情况:首先,我们将在类中创建侦听器。

步骤1:打开Eclipse。

步骤2:我们创建一个简单的项目。

import org.testng.Assert;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
@Listeners(com.javatpoint.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()。

侦听器

package com.javatpoint;
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文件。









 

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

上面的输出显示sum()测试用例已通过,并且testtofail()测试用例已失败。

第二种情况:现在,我们使用testng.xml文件创建侦听器。

步骤1:打开Eclipse。

步骤2:我们将创建两个Java项目。一个Java项目包含测试用例,另一个项目包含侦听器。

Testcases.java

package com.javatpoint;
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);
}
}

侦听器

package com.javatpoint;

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












 

步骤4:运行testng.xml文件。

输出量


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