testng擴充套件 失敗的用例重跑
新建包TestngRetry , implements IRetryAnalyzer實現重跑功能
implements 是實現多個介面, 介面的方法一般為空的, 必須重寫才能使用
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
import org.testng.Reporter;
import com.test.utils.PropertiesDataProvider;
public class TestngRetry implements IRetryAnalyzer {
private int retryCount = 1;
private static int maxRetryCount;
static {
maxRetryCount = 2;//重跑的次數
String sourcecodedir = src;//原始碼路徑
String sourcecodeencoding = UTF-8;//原始碼編碼
}
public boolean retry(ITestResult result) {
if (retryCount <= maxRetryCount) {
String message = result.getName()+" 測試用例執行失敗!即將重跑第 ["+ retryCount + "]次 :class [" + result.getTestClass().getName();
logger.info(message);
Reporter.setCurrentTestResult(result);
Reporter.log("RunCount=" + (retryCount + 1));
retryCount++;
return true;
}
return false;
}
public static int getMaxRetryCount() {
return maxRetryCount;
}
public int getRetryCount() {
return retryCount;
}
}
新建RetryListener,implements IAnnotationTransformer
重寫transform方法,讀取TestngRetry的重跑設定
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import org.testng.IAnnotationTransformer;
import org.testng.IRetryAnalyzer;
import org.testng.annotations.ITestAnnotation;
public class RetryListener implements IAnnotationTransformer {
@SuppressWarnings("rawtypes")
public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) {
IRetryAnalyzer retry = annotation.getRetryAnalyzer();
if (retry == null) {
annotation.setRetryAnalyzer(TestngRetry.class);
}
}
}
最後在xml檔案中加入監聽器RetryListener
<listeners>
<listener class-name="com.test.listener.RetryListener" />
</listeners>
相關文章
- TestNG測試框架之失敗測試重跑框架
- TestNg 失敗用例重試自動被 ignored 怎麼辦?
- TestNg失敗重跑—解決使用 dataProvider 引數化用例次數衝突問題IDE
- python擴充套件檔案import失敗Python套件Import
- Homestead Composer install 擴充套件 所有的 bin/*的都安裝失敗套件
- TestNG測試用例重跑詳解及實踐最佳化
- ?用Chrome擴充套件管理器, 管理你的擴充套件Chrome套件
- VSCode擴充套件應用VSCode套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- Pytest學習筆記9-失敗重跑筆記
- 解決virtualbox下Ubuntu磁碟擴充套件後修改fstab啟動失敗的記錄Ubuntu套件
- 重構 - 設計API的擴充套件機制API套件
- 如何重試 TestNg 中引數化的單條用例?
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- 重學ES6 函式的擴充套件(上)函式套件
- easyui應用(四)--- easyui擴充套件UI套件
- 並查集擴充套件應用並查集套件
- 實用的可選項(Optional)擴充套件套件
- python使用ctypes呼叫擴充套件模組的例項方法Python套件
- PHP擴充套件開發就是一個自己的PHP擴充套件PHP套件
- 擴充套件工具套件
- Sanic 擴充套件套件
- Mybatis擴充套件MyBatis套件
- SpringMVC 擴充套件SpringMVC套件
- ORACLE 擴充套件Oracle套件
- 重學ES6 陣列擴充套件(2)陣列套件
- 正則的擴充套件套件
- SRAM的容量擴充套件套件
- 如何重構CRM系統,滿足擴充套件的需求套件
- 使用Kotlin擴充套件函式擴充套件Spring Data案例Kotlin套件函式Spring
- JMeter 擴充套件開發:擴充套件 TCP 取樣器JMeter套件TCP
- Airflow 中文文件:用Dask擴充套件AI套件
- 用擴充套件的方式在 PHP 中使用 Kafka套件PHPKafka
- 用 TDD 的方式為 Laravel 開發擴充套件Laravel套件
- plain framework的實際應用和擴充套件AIFramework套件
- ASP.NET Core擴充套件庫之Http通用擴充套件ASP.NET套件HTTP
- Solon詳解(六)- Solon的校驗擴充套件框架使用與擴充套件套件框架
- [擴充套件推薦]Aliyun-oss-laravel —— Laravel最好的OSS Storage擴充套件套件Laravel