TestNG监听器·IInvokedMethodListener监听器

本文详细介绍了TestNG框架中IInvokedMethodListener监听器的使用方法。通过自定义监听器类,可在测试类的每个方法执行前后触发特定操作,增强了测试过程的可控性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

IInvokedMethodListener监听器

正文

该监听器中的监听方法会在测试类中的每一个方法执行之前或者之后都会运行。

示例中脚本目录结构

1、测试类

TestNGTestListener1.java

public class TestNGTestListener1 {
    @BeforeClass
    public void setUp(){
        System.out.println("TestNGTestListener1类中的setUp方法");
    }
    @AfterClass
    public void tearDown(){
        System.out.println("TestNGTestListener1类中的tearDown方法");
    }
    @Test
    public void testMethod1(){
        System.out.println("TestNGTestListener1类中的testMethod1方法");
        Assert.assertTrue(true);
    }
    @Test
    public void testMethod2(){
        System.out.println("TestNGTestListener1类中的testMethod2方法");
        Assert.assertTrue(false);
    }
}

2、自定义监听器类

实现IInvokedMethodListener接口中的两个方法,beforeInvocation()和afterInvocation()。接口只是声明了前述两个方法,我们需要重写方法内容。

beforeInvocation()在测试类中每一个方法执行前先执行一次;

afterInvocation()在测试类中每一个方法执行后都执行一次。

以示例中的测试类来说,在测试类中方法setUp()、tearDown()、testMethod1()和testMethod2()执行前都会分别执行一次beforeInvocation()方法;在测试类中方法setUp()、tearDown()、testMethod1()和testMethod2()执行后都会分别执行一次afterInvocation()方法。

CustomListener1.java

public class CustomListener1 implements IInvokedMethodListener {

    @Override
    public void beforeInvocation(IInvokedMethod iInvokedMethod, ITestResult iTestResult) {
        //在测试类中的每一个方法运行之前跑
        System.out.println("beforeInvocation"
        +iTestResult.getTestClass().getName()+"--->"+iInvokedMethod.getTestMethod().getMethodName());
    }

    @Override
    public void afterInvocation(IInvokedMethod iInvokedMethod, ITestResult iTestResult) {
        //在测试类中的每一个方法运行之后跑
        System.out.println("afterInvocation"
                +iTestResult.getTestClass().getName()+"--->"+iInvokedMethod.getTestMethod().getMethodName());
    }
}

3、测试类和自定义监听器类建立联系

测试类中添加 监听器注解@Listeners(监听器名称.class) 。注意:监听器注解是添加在测试类上。

@Listeners(CustomListener1.class)
public class TestNGTestListener1 {
    @BeforeClass
    public void setUp(){
        System.out.println("TestNGTestListener1类中的setUp方法");
    }
    @AfterClass
    public void tearDown(){
        System.out.println("TestNGTestListener1类中的tearDown方法");
    }
    @Test
    public void testMethod1(){
        System.out.println("TestNGTestListener1类中的testMethod1方法");
        Assert.assertTrue(true);
    }
    @Test
    public void testMethod2(){
        System.out.println("TestNGTestListener1类中的testMethod2方法");
        Assert.assertTrue(false);
    }
}

执行结果:

三人行,必有我师焉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值