前言
ITestListener监听器主要针对测试方法和xml文件中的test标签来进行相应监控。
正文
ITestListener监听器封装的方法以及方法的使用规则如下:
onTestStart():测试方法开始时才执行此方法。这里测试方法是指@Test注解的测试方法;
onTestSuccess():如果测试方法执行成功才执行此方法;
onTestFailure():如果测试方法执行失败才执行此方法;
onTestSkipped():如果测试方法执行跳过才执行此方法;
onTestFailedButWithinSuccessPercentage():自定义测试方法的执行结果。比如测试方法中有多个断言,其中一个断言没有通过,其他的断言都通过了,你可以根据具体情况,判断此测试方法执行通过;
onStart():在xml文件中的每一个<test>标签跑之前运行;
onFinish():在xml文件中的每一个<test>标签跑之后运行。
TestNGTestListener2.java
@Listeners(CustomListener2.class)
public class TestNGTestListener2 {
@BeforeClass
public void setUp(){
System.out.println("TestNGTestListener2类中的setUp方法");
}
@AfterClass
public void tearDown(){
System.out.println("TestNGTestListener2类中的tearDown方法");
}
@Test
public void testMethod1(){
System.out.println("TestNGTestListener2类中的testMethod1方法");
Assert.assertTrue(true);
}
@Test
public void testMethod2(){
System.out.println("TestNGTestListener2类中的testMethod2方法");
Assert.assertFalse(true);
}
}
CustomListener2.java
public class CustomListener2 implements ITestListener {
@Override
public void onTestStart(ITestResult iTestResult) {
//测试方法开始时才执行此方法
System.out.println("onTestStart->test method name:"+iTestResult.getName());
}
@Override
public void onTestSuccess(ITestResult iTestResult) {
//如果测试方法执行成功才执行此方法
System.out.println("onTestSuccess->test method name:"+iTestResult.getName());
}
@Override
public void onTestFailure(ITestResult iTestResult) {
//如果测试方法执行失败才执行此方法
System.out.println("onTestFailure->test method name:"+iTestResult.getName());
}
@Override
public void onTestSkipped(ITestResult iTestResult) {
//如果测试方法执行跳过才执行此方法
System.out.println("onTestSkipped->test method name:"+iTestResult.getName());
}
@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult iTestResult) {
}
@Override
public void onStart(ITestContext iTestContext) {
//在xml文件中的每一个<test>标签跑之前运行
System.out.println("onStart->test tag name:"+iTestContext.getName());
}
@Override
public void onFinish(ITestContext iTestContext) {
//在xml文件中的每一个<test>标签跑之后运行
System.out.println("onFinish->test tag name:"+iTestContext.getName());
}
}
xml文件:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Listeners TestSuite">
<test name="Test1">
<classes>
<class name="testng.TestNGTestListener2"></class>
</classes>
</test>
<test name="Test2">
<classes>
<class name="testng.TestNGTestListener2"></class>
</classes>
</test>
</suite>
执行结果:
三人行,必有我师焉。欢迎指正。