TestNG提供的幾種監聽器

它們是一些預定義的 Java 接口。用戶創建這些接口的實現類,並把它們加入到 TestNG 中,TestNG 便會在測試運行的不同時刻調用這些類中的接口方法。

IAnnotationTransformer監聽器IAnnotationTransformer 只能用來修改 @Test 註釋,如果需要修改其他TestNG 的註釋(比如,@DataProvider, @Factory 以及 @Configuration),需要使用 IAnnotationTransformer2 監聽器。IAnnotationTransformer 要求實現 transform 方法。

RetryListener implements IAnnotationTransformer

代碼中會使用其進行【失敗用例重跑】。

IHookable監聽器提供了類似與面向切面編程(AOP)中的 Around Advice的功能。其中的run方法相當於被監聽方法的一個代理。它在測試方法執行前後提供了切入點,從而使用戶能夠在測試方法運行前後注入特定的功能。

TestNG的執行過程中,有一種應用場景,就是根據當前執行的情況決定是否執行某個測試方法。即測試方法的執行有先決條件,滿足條件則執行,否則就跳過執行。這種應用場景的典型應用是執行測試方法前進行授權檢查,有授權則執行測試方法,沒有授權則跳過執行。

IHookable監聽器爲這種應用場景提供了可能。IHookable監聽器接口繼承自ITestNGListener接口,其中定義了唯一的方法。

TestNG的執行一個測試方法之前,首先調用IHookable監聽器的run()方法。如果滿足執行測試方法的條件,則在run()方法中再通過callBack參數的runTestMethod()方法調用測試方法,

Hookable implements  IHookable

代碼中會使用run方法進行【獲取測試類聲明屬性的值】【獲取該測試方法的原始數據】......

IReporter監聽器TestNG 提供了默認的測試報表。使用 IReporter 監聽器可以自定義不同格式的測試報告。IReporter監聽器只有一個方法需要實現。該方法在所有測試方法執行結束後被調用,通過遍歷 xmlSuites 和suites能夠獲取所有測試方法的信息以及測試結果。outputDirectory 是默認的測試報表生成路徑,當然你可以指定其他路徑生成報表。

代碼中主要實現一個方法:【自定義測試報告】

Void generateReport(java.util.List<XmlSuite> xmlSuites, java.util.List<ISuite> suites, java.lang.String outputDirectory)

ITestListener監聽器如果要在測試方法執行成功、失敗或者跳過時指定不同後續行爲,可以利用ITestListener 監聽器。也可以直接繼承TestListenerAdapter類來實現。該類是一個基於ITestListener 的簡單適配器,存儲了被運行的所有測試用例。

TestListener  extends  TestListenerAdapter

代碼中使用【onTestStart:測試方法執行前的操作】onTestFailure方法:測試失敗後截屏操作】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章