91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

金溪县| 资讯| 永德县| 章丘市| 鲁山县| 平潭县| 普兰店市| 凉城县| 资阳市| 阿荣旗| 织金县| 长宁区| 洪雅县| 临颍县| 景泰县| 吴川市| 平昌县| 吕梁市| 青田县| 个旧市| 汶川县| 辉县市| 华蓥市| 大方县| 六盘水市| 绥德县| 普宁市| 习水县| 丰城市| 隆化县| 麦盖提县| 南木林县| 合江县| 五河县| 十堰市| 芜湖县| 乐亭县| 台湾省| 威信县| 花莲市| 成安县|