TestNG测试框架的使用-常用的监听器

1:TestNG常用的监听器有哪些

1.1:IInvokedMethodListener监听器

  IInvokedMethodListener可以对测试方法进行before和after的处理操作;注意:这个监听器是对所有的测试方法都进行处理 

1.2:ITestListener监听器

  ITestListener监听器主要是针对@Test方法的操作 例如 @Test方法执行前/后的处理 成功/失败后的处理 跳过执行后的处理等。。

1.3:ISuiteListener监听器

  ISuiteListener监听器主要是针对testng.xml文件Suite标签执行前后的处理

2:IInvokedMethodListener的使用

A:建立一个IInvokedMethodListener的类

package ListenerPackage;

import org.testng.IInvokedMethod;
import org.testng.IInvokedMethodListener;
import org.testng.ITestResult;

public class Listener_IInvokedMethodListener implements IInvokedMethodListener{

	//前处理
	@Override
	public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {
		
		System.out.println(method.getClass().getName()+":正在运行前处理------>"+ testResult.getName());
		
	}

	//后处理
	@Override
	public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
		
		System.out.println(method.getClass().getName()+":正在运行后处理------>"+ testResult.getName());
		
	}

}

B:建立demo测试类 @Listeners(ListenerPackage.Listener_IInvokedMethodListener.class)

package TestNGEXT;

import static org.testng.Assert.assertEquals;

import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;

@Listeners(ListenerPackage.Listener_IInvokedMethodListener.class)
public class Demo_TestNG{
	//Demo1会运行失败
	@Test
	public void Demo1(){
		
		System.out.println("This is Demo1 Method");
		
//		Assert.assertFalse(false);
		assertEquals(false, true);
	}
	//Demo2会运行成功
	@Test
	public void Demo2(){
		
		System.out.println("This is Demo2 Method");
		
		assertEquals(true, true);
	}
	
	@BeforeMethod
	public void Before_Demo3(){
		
		System.out.println("This is Demo3--> Before Test");
		
		assertEquals(true, true);
	}
}

C:执行结果

3:ITestListener的使用

A:重新ITestListener监听器接口实现方法

package ListenerPackage;

import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;

public class Listener_ITestListener implements ITestListener{

	@Override
	public void onTestStart(ITestResult result) {
		// 针对@Test方法开始前的处理
		System.out.println("正在进行--->"+result.getName());
	}

	@Override
	public void onTestSuccess(ITestResult result) {
		// 针对@Test方法执行成功后的处理
		System.out.println("执行成功后进行--->"+result.getName());
	}

	@Override
	public void onTestFailure(ITestResult result) {
		// 针对@Test方法执行失败后的处理
		System.out.println("执行失败后进行--->"+result.getName());
	}

	@Override
	public void onTestSkipped(ITestResult result) {
		// 针对@Test方法跳过执行后的处理
		System.out.println("跳过执行后进行--->"+result.getName());
	}

	@Override
	public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
		// 针对@Test方法断言的处理(这个很少用)
		
	}

	@Override
	public void onStart(ITestContext context) {
		// 针对TestNG。xml文件Test标签开始前的处理
		System.out.println("执行Test tag前进行--->"+context.getName());
	}

	@Override
	public void onFinish(ITestContext context) {
		// 针对TestNG。xml文件Test标签开始后的处理
		System.out.println("执行Test tag后进行--->"+context.getName());
	}
}

B:测试方法

package TestNGEXT;

import static org.testng.Assert.assertEquals;

import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;

@Listeners(ListenerPackage.Listener_ITestListener.class)
public class Demo_TestNG{
	//Demo1会运行失败
	@Test
	public void Demo1(){
		
		System.out.println("This is Demo1 Method");
		
//		Assert.assertFalse(false);
		assertEquals(false, true);
	}
	//Demo2会运行成功
	@Test
	public void Demo2(){
		
		System.out.println("This is Demo2 Method");
		
		assertEquals(true, true);
	}
	
	@BeforeMethod
	public void Before_Demo3(){
		
		System.out.println("This is Demo3--> Before Test");
		
		assertEquals(true, true);
	}

}

C:testng.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
  <test thread-count="1" name="Test">
    <classes>
      <class name="TestNGEXT.Demo_TestNG"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

D:运行结果

E:分析:

从运行结果我们可以看到ITestListener监听器的作用主要是针对@Test方法的监听 对其他的 例如@BeforeMethod等方法是不监听的

4:ISuiteListener监听器的使用

A:建立demo实现ISuiteListener接口 重写ISuiteListener接口实现方法

package ListenerPackage;

import org.testng.ISuite;
import org.testng.ISuiteListener;

public class Listener_ISuiteListener implements ISuiteListener{

	@Override
	public void onStart(ISuite suite) {
		// 这个是针对testng.xml执行文件 Suite标签运行前的处理
		System.out.println("Suite开始执行-----");
	}

	@Override
	public void onFinish(ISuite suite) {
		// 这个是针对testng.xml执行文件 Suite标签运行前的处理
		System.out.println("Suite结束执行-----");
	}
}

B:测试Demo

package TestNGEXT;

import static org.testng.Assert.assertEquals;

import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;

@Listeners(ListenerPackage.Listener_ISuiteListener.class)
public class Demo_TestNG{
	//Demo1会运行失败
	@Test
	public void Demo1(){
		
		System.out.println("This is Demo1 Method");
		
//		Assert.assertFalse(false);
		assertEquals(false, true);
	}
	//Demo2会运行成功
	@Test
	public void Demo2(){
		
		System.out.println("This is Demo2 Method");
		
		assertEquals(true, true);
	}
	
	@BeforeMethod
	public void Before_Demo3(){
		
		System.out.println("This is Demo3--> Before Test");
		
		assertEquals(true, true);
	}

}

C:testng.xml运行

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
  <test thread-count="1" name="Test">
    <classes>
      <class name="TestNGEXT.Demo_TestNG"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

D:运行结果

5:如何同时实现这3个监听器的方法

要想实现这3个监听器的实现方法可以同时implements IInvokedMethodListener,ITestListener,ISuiteListener

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值