前言
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);
}
}
执行结果:
三人行,必有我师焉。