错误的测试用例计入testng中的跳过测试

时间:2017-09-01 11:09:01

标签: java testng

我使用以下代码来获取跳过的测试用例计数

的计数
public void onFinish(ITestContext context) {
    skippedTests =context.getSkippedTests().getAllResults();

   for (ITestResult temp : skippedTests) {
            ITestNGMethod method = temp.getMethod();
            if (context.getSkippedTests().getResults(method).size() > 1) {
                skippedTests.remove(temp);} else {
                if (context.getPassedTests().getResults(method).size() > 0) {
                    skippedTests.remove(temp);
                }
                else{if(context.getFailedTests().getResults(method).size() > 0){
                skippedTests.remove(temp);
               }
                }
            }
        }

但是,当套件完全执行跳过的测试用例计数时,很多次都会计算所有跳过的方法(包括跳过前类,跳过方法跳过...等),而不仅仅是跳过测试用例的计数。

请让我知道我错过了什么。

1 个答案:

答案 0 :(得分:0)

您可以在结尾处过滤掉所有非测试方法,如下所示

public void onFinish(ITestContext context) {
    Set<ITestResult> skippedTests = context.getSkippedTests().getAllResults();

    for (ITestResult temp : skippedTests) {
        ITestNGMethod method = temp.getMethod();
        //If the method is not a @Test annotated method, then lets remove that from the skipped lists
        if (!method.isTest()) {
            skippedTests.remove(temp);
            continue;
        }
        if (context.getSkippedTests().getResults(method).size() > 1) {
            skippedTests.remove(temp);
        } else {
            if (context.getPassedTests().getResults(method).size() > 0) {
                skippedTests.remove(temp);
            } else {
                if (context.getFailedTests().getResults(method).size() > 0) {
                    skippedTests.remove(temp);
                }
            }
        }
    }
}