org.testng.internal.TestResult Java Examples

The following examples show how to use org.testng.internal.TestResult. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: SeleniumTestsReporter.java    From seleniumtestsframework with Apache License 2.0 4 votes vote down vote up
public void afterInvocation(final IInvokedMethod method, final ITestResult result) {
    Reporter.setCurrentTestResult(result);

    // Handle Soft CustomAssertion
    if (method.isTestMethod()) {
        final List<Throwable> verificationFailures = CustomAssertion.getVerificationFailures();

        final int size = verificationFailures.size();
        if (size == 0) {
            return;
        } else if (result.getStatus() == TestResult.FAILURE) {
            return;
        }

        result.setStatus(TestResult.FAILURE);

        if (size == 1) {
            result.setThrowable(verificationFailures.get(0));
        } else {

            // create failure message with all failures and stack traces barring last failure)
            final StringBuilder failureMessage = new StringBuilder("!!! Many Test Failures (").append(size).append(
                    ")\n");
            for (int i = 0; i < size - 1; i++) {
                failureMessage.append("Failure ").append(i + 1).append(" of ").append(size).append("\n");

                final Throwable t = verificationFailures.get(i);
                final String fullStackTrace = Utils.stackTrace(t, false)[1];
                failureMessage.append(fullStackTrace).append("\n");
            }

            // final failure
            final Throwable last = verificationFailures.get(size - 1);
            failureMessage.append("Failure ").append(size).append(" of ").append(size).append(":n");
            failureMessage.append(last.toString());

            // set merged throwable
            final Throwable merged = new Throwable(failureMessage.toString());
            merged.setStackTrace(last.getStackTrace());

            result.setThrowable(merged);
        }
    }
}
 
Example #2
Source File: TestNamingListener.java    From carina with Apache License 2.0 4 votes vote down vote up
/**
 * Set full test name based on test class, method and other generic information. It is generated based by ITestResult object.
 * 
 * @param ITestResult result
 * @return String test name
 */     
@SuppressWarnings("unlikely-arg-type")
private static String setTestName(ITestResult result) {
    String name = "";

    if (result.getTestContext() == null) {
        throw new RuntimeException("Unable to set Test name without testContext!");
    }
    @SuppressWarnings("unchecked")
    Map<Object[], String> testnameMap = (Map<Object[], String>) result.getTestContext().getAttribute(SpecialKeywords.TEST_NAME_ARGS_MAP);

    if (testnameMap != null) {
        String testHash = String.valueOf(Arrays.hashCode(result.getParameters()));
        if (testnameMap.containsKey(testHash)) {
            name = testnameMap.get(testHash);
        }
    }

    if (name.isEmpty()) {
        name = result.getTestContext().getCurrentXmlTest().getName();
    }

    // TODO: find the bext way to calculate TUID/hash
    if (result.getTestContext().getCurrentXmlTest().getAllParameters().containsKey(SpecialKeywords.EXCEL_DS_CUSTOM_PROVIDER) ||
            result.getTestContext().getCurrentXmlTest().getAllParameters().containsKey(SpecialKeywords.DS_CUSTOM_PROVIDER)) {
        // AUTO-274 "Pass"ing status set on emailable report when a test step fails
        String methodUID = "";
        for (int i = 0; i < result.getParameters().length; i++) {
            if (result.getParameters()[i] != null) {
                if (result.getParameters()[i].toString().contains(SpecialKeywords.TUID + ":")) {
                    methodUID = result.getParameters()[i].toString().replace(SpecialKeywords.TUID + ":", "");
                    break; // first TUID: parameter is used
                }
            }
        }
        if (!methodUID.isEmpty()) {
            name = methodUID + " - " + name;
        }
    }

    name = name + " - " + getMethodName(result);
    LOGGER.debug("testName: " + name);
    
    // introduce invocation count calculation here as in multi threading mode TestNG doesn't provide valid
    // getInvocationCount() value
    int index = ((TestResult) result).getParameterIndex();
    if (index > 0) {
        // that's a dataprovider line index
        index++; //to make correlation between line and index number
        LOGGER.debug("test: " + name  + "; index: " + index);
        name = name + String.format(SpecialKeywords.DAPAPROVIDER_INDEX, String.format("%04d", index));
    }
    
    ITestNGMethod[] methods = result.getTestContext().getAllTestMethods();
    if (methods.length > 0) {
        int invCount = methods[0].getInvocationCount();
        if (invCount > 1) {
            LOGGER.debug("Detected method '" + result.getMethod().getMethodName() + "' with non zero invocationCount: " + invCount);
            int countIndex = getCurrentInvocationCount(name);
            LOGGER.debug("test: " + name + "; InvCount index: " + countIndex);
            name = name + String.format(SpecialKeywords.INVOCATION_COUNTER, String.format("%04d", countIndex));
        }
    }
    
    testName.set(name);
    return testName.get();
}