summaryrefslogtreecommitdiffstats
path: root/junit4/src/main/java/org/junit/runner/notification/Failure.java
blob: 501caa5ed1e0ed209b86aa1ae2c02b5677909ef6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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.
 */
public class Failure implements Serializable {
	private static final long serialVersionUID = 1L;
	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) {
		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();
	}
}