All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.thucydides.core.steps.TestFailureCause Maven / Gradle / Ivy

package net.thucydides.core.steps;

import net.serenitybdd.core.exceptions.SerenityManagedException;
import net.thucydides.core.model.TestResult;
import net.thucydides.core.model.failures.FailureAnalysis;
import net.thucydides.core.model.stacktrace.FailureCause;
import net.thucydides.core.model.stacktrace.RootCauseAnalyzer;

public class TestFailureCause {
    private final FailureCause rootCause;
    private final String testFailureClassname;
    private final String testFailureMessage;
    private final TestResult annotatedResult;

    public TestFailureCause(FailureCause rootCause, String testFailureClassname, String testFailureMessage, TestResult annotatedResult) {

        this.rootCause = rootCause;
        this.testFailureClassname = testFailureClassname;
        this.testFailureMessage = testFailureMessage;
        this.annotatedResult = annotatedResult;
    }

    public static TestFailureCause from(Throwable cause) {
        if (cause != null) {
            RootCauseAnalyzer rootCauseAnalyser = new RootCauseAnalyzer(SerenityManagedException.detachedCopyOf(cause));
            FailureCause rootCause = rootCauseAnalyser.getRootCause();
            String testFailureClassname = rootCauseAnalyser.getRootCause().getErrorType();
            String testFailureMessage = rootCauseAnalyser.getMessage();
            TestResult annotatedResult = new FailureAnalysis().resultFor(rootCause.exceptionClass());
            return new TestFailureCause(rootCause, testFailureClassname, testFailureMessage, annotatedResult);
        } else {
            return new TestFailureCause(null, "", "", TestResult.UNDEFINED);
        }
    }

    public FailureCause getRootCause() {
        return rootCause;
    }

    public String getTestFailureClassname() {
        return testFailureClassname;
    }

    public String getTestFailureMessage() {
        return testFailureMessage;
    }

    public TestResult getAnnotatedResult() {
        return annotatedResult;
    }

    public boolean isDefined() {
        return (!testFailureClassname.isEmpty());
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy