Junit4 @Rule方法--Rerun失敗測(cè)試用例

一、背景
在做自動(dòng)化測(cè)試中,經(jīng)常會(huì)出現(xiàn)一些由于各種因素引起的假性失敗(非bug),例如:頁(yè)面未加載出來(lái)、打開(kāi)app失敗等現(xiàn)象。每次檢查測(cè)試結(jié)果,需要花一些時(shí)間去鑒別是否為bug,采用的方法是再運(yùn)行一遍,于是:是否可以在case執(zhí)行失敗時(shí)自動(dòng)rerun?

二、實(shí)現(xiàn)Rule
Junit4 提供了一些高級(jí)特性,如@Rule,框架自帶了一些Rule,也可以自己定義。以下自定義一個(gè)Rule,實(shí)現(xiàn)失敗重跑機(jī)制:
//使用自定義Rule
@Rule
public RetryRule retryRule = new RetryRule(2);

//實(shí)現(xiàn)TestRule接口
public class RetryRule implements TestRule {
private int retryCount;

    public RetryRule(int retryCount) {
        this.retryCount = retryCount;
    }

    public void setRetryCount(int retryCount) {
        this.retryCount = retryCount;
    }

    public Statement apply(Statement base, Description description) {
        return statement(base, description);
    }

    private Statement statement(final Statement base, final Description description) {
        return new Statement() {
            @Override
            public void evaluate() throws Throwable {
                Throwable caughtThrowable = null;
                // implement retry logic here
                for (int i = 0; i < retryCount; i++) {
                    try {
                        base.evaluate();
                        HFLog.logMessage("-----------RetryRunner-----------: Test case success, " + (i + 1));
                        return;
                    } catch (Throwable t) {
                        caughtThrowable = t;
                        HFLog.logMessage("-----------RetryRunner-----------: Test case failed, " + (i + 1) + ", " + getExceptionMsg(caughtThrowable));
                    }
                }
                throw caughtThrowable;
            }
        };
    }

三、參考資料:
https://segmentfault.com/a/1190000005923632
https://tonydeng.github.io/2016/05/11/junit-more-feature/
http://haibin369.iteye.com/blog/2088541

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,881評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,117評(píng)論 25 708
  • 白天,適合與他人一起說(shuō)話(huà)、玩笑;黑夜,天生就與孤獨(dú)有緣。總說(shuō)成熟是能在夜晚偷偷痛哭,而白天卻可一副嬉笑怒罵的模樣。...
    水魄1123閱讀 325評(píng)論 0 0
  • 可預(yù)見(jiàn)的不均衡 在躍遷這本書(shū)中,提到一個(gè)很有趣的模型游戲叫做小糖人世界(Netlogo).我看到這里上網(wǎng)玩兒了一下...
    Claire_han閱讀 291評(píng)論 0 0
  • 看了簡(jiǎn)友井底女蛙一篇科普文章,有些感觸,想到干貨與水果的問(wèn)題。 所謂干貨,重在求真求實(shí),沒(méi)有水份,沒(méi)有色澤,不重藝...
    石竹閱讀 343評(píng)論 10 10