激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - TestNG通過自定義Listener形式實現用例失敗重試

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

2021-05-07 01:13今日頭條測試開發Kevin Java教程

當測試類非常多的時候,需要在每一個類前都增加標簽@Test(retryAnalyzer = MyRetry.class)。有沒有什么全局的方式來搞定這件事兒呢?我們可以通過自定義listener來解決!

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

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

 

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

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

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

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

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

 

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

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

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

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

  1. import java.lang.reflect.Constructor; 
  2. import java.lang.reflect.Method; 
  3. import org.testng.IAnnotationTransformer; 
  4. import org.testng.annotations.ITestAnnotation; 
  5. public class RetryListener implements IAnnotationTransformer { 
  6.     @Override 
  7.     public void transform(ITestAnnotation testannotation, Class testClass, 
  8.         Constructor testConstructor, Method testMethod)    { 
  9.         testannotation.setRetryAnalyzer(MyRetry.class); 
  10.     } 

測試類代碼如下:

  1. import org.testng.annotations.Test; 
  2. import static org.testng.Assert.assertEquals; 
  3. public class Case1 { 
  4. @Test 
  5. public void f1() { 
  6.     System.out.println("f11"); 
  7.     assertEquals("a","b"); 
  8.   } 
  9.   @Test 
  10.   public void f2() { 
  11.   System.out.println("f21"); 
  12.   assertEquals("a","a"); 

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

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

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

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

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

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

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

原文地址:https://www.toutiao.com/i6954273928218984999/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 一级黄色免费 | 欧美性受xxx黑人xyx性爽 | 亚洲一区二区中文字幕在线观看 | 黄视频网站免费在线观看 | 91看片.| 黄色电影免费提供 | 国产精品久久久久久久久久东京 | 免费日本一区二区 | 国产精品久久久久久久久久久久午夜 | 精品中文字幕视频 | 一级做人爱c黑人影片 | 九九久久视频 | 免费三级大片 | 色羞羞 | 欧美精品一区二区免费 | 亚洲aⅴ免费在线观看 | 欧美日韩手机在线观看 | 永久av在线免费观看 | 久久久久久99 | 成人在线视频播放 | 欧美a级理论片 | av在线免费观看网 | 最新在线中文字幕 | 91av久久| 久久久www视频 | 国产成年人网站 | 黄色免费视频观看 | 国产一级毛片高清视频完整版 | 91精品免费观看 | 一级做a爱片性色毛片高清 国产精品色在线网站 | 成人18免费观看 | 国产免费一区二区三区 | 黑人日比 | 99爱视频 | 国产成人精品一区二区视频免费 | 欧美综合在线观看视频 | 国产精品一区二区三区在线 | 国产1区2区在线 | 亚洲网站免费 | 欧美18一19sex性护士农村 | 日本看片一区二区三区高清 |