| package org.junit.runner.notification; |
| |
| import java.io.PrintWriter; |
| import java.io.Serializable; |
| import java.io.StringWriter; |
| |
| import org.junit.runner.Description; |
| |
| /** |
| * A <code>Failure</code> 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. |
| * |
| * @since 4.0 |
| */ |
| public class Failure implements Serializable { |
| private static final long serialVersionUID = 1L; |
| |
| /* |
| * We have to use the f prefix until the next major release to ensure |
| * serialization compatibility. |
| * See https://github.com/junit-team/junit/issues/976 |
| */ |
| private final Description fDescription; |
| private final Throwable fThrownException; |
| |
| /** |
| * Constructs a <code>Failure</code> 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) { |
| this.fThrownException = thrownException; |
| this.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() { |
| return getTestHeader() + ": " + fThrownException.getMessage(); |
| } |
| |
| /** |
| * Convenience method |
| * |
| * @return the printed form of the exception |
| */ |
| public String getTrace() { |
| StringWriter stringWriter = new StringWriter(); |
| PrintWriter writer = new PrintWriter(stringWriter); |
| getException().printStackTrace(writer); |
| return stringWriter.toString(); |
| } |
| |
| /** |
| * Convenience method |
| * |
| * @return the message of the thrown exception |
| */ |
| public String getMessage() { |
| return getException().getMessage(); |
| } |
| } |