1 package org.junit.runner.notification;
2 
3 import java.io.PrintWriter;
4 import java.io.Serializable;
5 import java.io.StringWriter;
6 
7 import org.junit.runner.Description;
8 
9 /**
10  * A <code>Failure</code> holds a description of the failed test and the
11  * exception that was thrown while running it. In most cases the {@link org.junit.runner.Description}
12  * will be of a single test. However, if problems are encountered while constructing the
13  * test (for example, if a {@link org.junit.BeforeClass} method is not static), it may describe
14  * something other than a single test.
15  */
16 public class Failure implements Serializable {
17 	private static final long serialVersionUID = 1L;
18 	private final Description fDescription;
19 	private final Throwable fThrownException;
20 
21 	/**
22 	 * Constructs a <code>Failure</code> with the given description and exception.
23 	 * @param description a {@link org.junit.runner.Description} of the test that failed
24 	 * @param thrownException the exception that was thrown while running the test
25 	 */
Failure(Description description, Throwable thrownException)26 	public Failure(Description description, Throwable thrownException) {
27 		fThrownException = thrownException;
28 		fDescription= description;
29 	}
30 
31 	/**
32 	 * @return a user-understandable label for the test
33 	 */
getTestHeader()34 	public String getTestHeader() {
35 		return fDescription.getDisplayName();
36 	}
37 
38 	/**
39 	 * @return the raw description of the context of the failure.
40 	 */
getDescription()41 	public Description getDescription() {
42 		return fDescription;
43 	}
44 
45 	/**
46 	 * @return the exception thrown
47 	 */
48 
getException()49 	public Throwable getException() {
50 	    return fThrownException;
51 	}
52 
53 	@Override
toString()54 	public String toString() {
55 	    StringBuffer buffer= new StringBuffer();
56 	    buffer.append(getTestHeader() + ": "+fThrownException.getMessage());
57 	    return buffer.toString();
58 	}
59 
60 	/**
61 	 * Convenience method
62 	 * @return the printed form of the exception
63 	 */
getTrace()64 	public String getTrace() {
65 		StringWriter stringWriter= new StringWriter();
66 		PrintWriter writer= new PrintWriter(stringWriter);
67 		getException().printStackTrace(writer);
68 		StringBuffer buffer= stringWriter.getBuffer();
69 		return buffer.toString();
70 	}
71 
72 	/**
73 	 * Convenience method
74 	 * @return the message of the thrown exception
75 	 */
getMessage()76 	public String getMessage() {
77 		return getException().getMessage();
78 	}
79 }
80