package org.junit.runner.notification; import java.io.PrintWriter; import java.io.Serializable; import java.io.StringWriter; import org.junit.runner.Description; /** * A Failure holds a description of the failed test and the * exception that was thrown while running it. In most cases the {@link org.junit.runner.Description} * will be of a single test. However, if problems are encountered while constructing the * test (for example, if a {@link org.junit.BeforeClass} method is not static), it may describe * something other than a single test. */ public class Failure implements Serializable { private static final long serialVersionUID = 1L; private final Description fDescription; private final Throwable fThrownException; /** * Constructs a Failure with the given description and exception. * @param description a {@link org.junit.runner.Description} of the test that failed * @param thrownException the exception that was thrown while running the test */ public Failure(Description description, Throwable thrownException) { fThrownException = thrownException; fDescription= description; } /** * @return a user-understandable label for the test */ public String getTestHeader() { return fDescription.getDisplayName(); } /** * @return the raw description of the context of the failure. */ public Description getDescription() { return fDescription; } /** * @return the exception thrown */ public Throwable getException() { return fThrownException; } @Override public String toString() { StringBuffer buffer= new StringBuffer(); buffer.append(getTestHeader() + ": "+fThrownException.getMessage()); return buffer.toString(); } /** * Convenience method * @return the printed form of the exception */ public String getTrace() { StringWriter stringWriter= new StringWriter(); PrintWriter writer= new PrintWriter(stringWriter); getException().printStackTrace(writer); StringBuffer buffer= stringWriter.getBuffer(); return buffer.toString(); } /** * Convenience method * @return the message of the thrown exception */ public String getMessage() { return getException().getMessage(); } }