testng - Invocationcount - 在第一次失败时停止测试

时间:2014-10-07 15:37:31

标签: testng

我的测试invocationcount设置为20,如果迭代4或5失败,我希望测试停止。

有什么办法吗?我只是用google搜索相同但找不到​​任何

1 个答案:

答案 0 :(得分:2)

您可以使用IInvokedMethodListener

覆盖接口的两种方法。在afterInvocation中,检查结果并可能添加到Map<method, failureCount>

的地图

在beforeInvocation中,检查failCount&gt; 4然后抛出一个SkipException,将导致其余的调用被跳过。

类似的东西:

static Map<String, Integer> methodFailCount = new HashMap<String, Integer>();
    public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {

        if(methodFailCount.get(method.getTestMethod().getMethodName())!=  null && methodFailCount.get(method.getTestMethod().getMethodName()) > 4)
            throw new SkipException("Skipped due to failure count > 4");
    }

    public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
        if(testResult.getStatus() == TestResult.FAILURE){
            if(methodFailCount.get(method.getTestMethod().getMethodName() ) == null)
                methodFailCount.put(method.getTestMethod().getMethodName(),1);
            else{
                methodFailCount.put(method.getTestMethod().getMethodName(),
                        methodFailCount.get(method.getTestMethod().getMethodName() )+1);
            }

        }   

    }