JAVA单元测试框架-14-实现TestNG失败案例重跑

前面是通过java代码指定重跑,本节是讲解通过实现IAnnotationTransformer接口实现失败案例重跑

创建MyRetry  实现IRetryAnalyzer 接口

package Listener;


import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;

public class MyRetry implements IRetryAnalyzer {
    // 设置当前失败执行的次数
    private int retryCount = 1;
    // 设置最大失败执行次数
    private static int maxRetryCount = 3;

    @Override
    public boolean retry(ITestResult iTestResult) {
        if (retryCount < maxRetryCount) {
            retryCount++;
            return true;
        }
        return false;
    }
}

创建MyRetryListener  实现IAnnotationTransformer 接口

package Listener;

import org.testng.IRetryAnalyzer;
import org.testng.annotations.ITestAnnotation;
import org.testng.internal.annotations.IAnnotationTransformer;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

public class MyRetryListener implements IAnnotationTransformer {

    @Override
    public void transform(ITestAnnotation iTestAnnotation, Class aClass, Constructor constructor, Method method) {

        IRetryAnalyzer myRetry = iTestAnnotation.getRetryAnalyzer();
        if (myRetry == null) {
            iTestAnnotation.setRetryAnalyzer(MyRetry.class);
        }
    }

}

执行的测试用例:

package TestNg;

import org.testng.Assert;
import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;

public class TestAssert {
    @Test
    public void TestAssert() {
        Assert.assertEquals("2", 2);
    }
    @Test
    public void TestAssertNotNull() {
        int a=3;
        Assert.assertNotNull(a);
    }
    @Test
    public void TestAssertSame() {
        String expected="aaa";
        String actual="aaa";
        Assert.assertSame(actual, expected,"实际结果跟预期结果不一样");
    }
    @Test
    public void TestAssertTrue() {
        Assert.assertTrue(1==2);
    }
    @Test
    public void TestAssertAll(){
        System.out.println("Test start");
        SoftAssert assertion = new SoftAssert();
        assertion.assertEquals(12, 13,"两者不相等");
        System.out.println("Test complete");
        System.out.println(3+8);
        assertion.assertAll();
    }

}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All Test Suite">
    <test verbose="2" preserve-order="true" name="D:/IdeaProject/interfaceRestAssured">
        <classes>
           <class name="TestNg.TestAssert">
           </class>
        </classes>
    </test>
  <!--  <listeners>
        <listener class-name="report.ExtentReport"></listener>
    </listeners>-->
  <!-- 这是reportNG的监听类-->
  <!--  <listeners>
         <listener class-name="org.uncommons.reportng.HTMLReporter"></listener>
         <listener class-name="org.uncommons.reportng.JUnitXMLReporter"></listener>
     </listeners>-->
    <listeners>
        <listener class-name="Listener.MyRetryListener"></listener>
    </listeners>
</suite>

执行testng.xml

查看执行结果如下:失败的用例重新执行了两次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员路同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值