基于上一篇的内容,这里我们开始写监听类Listener。我这里写监听类的思路是,继承TestListenerAdapter这个类,然后对其中的方法进行重写。网上也有很多资料,建议先学习一下,然后写出来。
package webui.xUtils; import org.openqa.selenium.WebDriver; import org.testng.ITestContext; import org.testng.ITestResult; import org.testng.Reporter; import org.testng.TestListenerAdapter; public class TestNGListener extends TestListenerAdapter{ private static WebDriver driver; logUtil log = new logUtil(TestNGListener.class); public static void setDriver(WebDriver driver) { TestNGListener.driver = driver; } @Override //用例执行结束后,用例执行成功时调用 public void onTestSuccess(ITestResult tr) { log.info("测试步骤成功完成。"+"------Test Success!"); Reporter.log("测试步骤成功完成。"+"------Test Success!"); super.onTestSuccess(tr); } @Override //用例执行结束后,用例执行失败时调用 public void onTestFailure(ITestResult tr) { log.error("测试步骤执行失败。"+"------Test Failure!"); Reporter.log("测试步骤执行失败。"+"------Test Failure!"); super.onTestFailure(tr); //发生错误后截图的功能可以根据实际需求进行添加。 //ScreenShot screenShot = new ScreenShot(driver); //获取当前project目录 //String path = System.getProperty("user.dir").replace("\", "/"); //加上时间戳以区分截图 // String curTime = TimeUtil.formatDate("yyyy-MM-dd"); //screenShot.saveScreenShot(path + "/img/", "testFail" + ".png"); } @Override //用例执行结束后,用例执行skip时调用 public void onTestSkipped(ITestResult tr) { log.error("测试执行步骤跳过。"+"------Test Skipped!"); Reporter.log("测试执行步骤跳过。"+"------Test Skipped!"); super.onTestSkipped(tr); } @Override //每次调用测试@Test之前调用 public void onTestStart(ITestResult tr) { log.info("------测试开始。内容:" + tr.getMethod().getDescription() +"------Start!"); Reporter.log("------测试开始。内容:" + tr.getMethod().getDescription() +"------Start!"); super.onTestStart(tr); } @Override //在所有测试运行之后调用,并且所有的配置方法都被调用 public void onFinish(ITestContext testContext) { log.info("------结束:"+" ------Test Finish!"); Reporter.log("------结束:"+" ------Test Finish!"); super.onFinish(testContext); } }
这样,我们完成了对监听类的编写,在实际写测试用例的代码时候,加入注释@Listener({TestNGListener.class}),并且在进行初始化driver的时候来设置driver即可。例如:TestNGListener.setDriver(driver);