中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

TestNG如何通過自定義Listener形式實現用例失敗重試

發布時間:2021-09-17 10:58:18 來源:億速云 閱讀:308 作者:柒染 欄目:web開發

TestNG如何通過自定義Listener形式實現用例失敗重試,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

TestNG如何通過自定義Listener形式實現用例失敗重試

標簽形式實現用例失敗重試

前面的文章講解了可以通過標簽的形式實現用例失敗重試的方法,@Test(retryAnalyzer = MyRetry.class)。

詳情可以參考文章:詳解TestNG中的用例失敗重試和自定義監聽器

但是通過@Test標簽方式仍然存在一定的問題,即該方法只能左右在類或者方法上,當測試類非常多的時候,需要在每一個類前都增加標簽@Test(retryAnalyzer = MyRetry.class)。

有沒有什么全局的方式來搞定這件事兒呢?我們可以通過自定義listener來解決!

自定義Listener形式實現用例失敗重試

我們已經通過標簽實現了用例失敗的重試機制,那么我們就可以寫一個listenser來控制標簽。TestNG中提供了IAnnotationTransformer來讓我們實現這一目的。話不多說,直接上代碼

重試代碼邏輯的代碼實現如下:

import org.testng.IRetryAnalyzer; import org.testng.ITestResult; public class MyRetry implements IRetryAnalyzer{ private int retryCount = 0; private static final int maxRetryCount = 3;//用例失敗重新執行3次 @Override public boolean retry(ITestResult result) { if (retryCount < maxRetryCount) { retryCount++; return true;     } return false; } }

自定義Retry 的listener代碼實現如下:

import java.lang.reflect.Constructor; import java.lang.reflect.Method; import org.testng.IAnnotationTransformer; import org.testng.annotations.ITestAnnotation; public class RetryListener implements IAnnotationTransformer {     @Override     public void transform(ITestAnnotation testannotation, Class testClass,         Constructor testConstructor, Method testMethod)    {         testannotation.setRetryAnalyzer(MyRetry.class);     } }

測試類代碼如下:

import org.testng.annotations.Test; import static org.testng.Assert.assertEquals; public class Case1 { @Test public void f1() {     System.out.println("f11");     assertEquals("a","b");   }   @Test   public void f2() {   System.out.println("f21");   assertEquals("a","a"); } }

設置testng的配置文件,添加自定義的RetryListener

TestNG如何通過自定義Listener形式實現用例失敗重試

運行結果如下,可以看到重試了3次。

TestNG如何通過自定義Listener形式實現用例失敗重試

備注:如果在一個case中,方法中有標簽重試機制代碼如下(設置重試為1),那該如何處理呢?

@Test(retryAnalyzer = MyRetry2.class) public void f1() {     System.out.println("f11");     assertEquals("a","b");   }

我們運行代碼會發現以testng的配置文件中的添加自定義RetryListener中使用的MyRetry.class為主。

關于TestNG如何通過自定義Listener形式實現用例失敗重試問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

郧西县| 水城县| 东源县| 蓝山县| 铅山县| 宜君县| 泽州县| 湖州市| 益阳市| 水富县| 安塞县| 临夏县| 砚山县| 西安市| 清远市| 阳谷县| 卢湾区| 如皋市| 中卫市| 马尔康县| 凉山| 重庆市| 南溪县| 安溪县| 永仁县| 寿光市| 广宗县| 新乡市| 班玛县| 抚顺市| 治县。| 敦煌市| 鸡东县| 广丰县| 湖北省| 兰州市| 三河市| 嘉兴市| 永泰县| 太仓市| 临汾市|