基於上一篇的內容,這里我們開始寫監聽類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);