aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/junit/runner/notification/RunListener.java
blob: ffe8134a6d16fe0d0bf8c1d5e8db8478b71db4c8 (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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package org.junit.runner.notification;

import org.junit.internal.AssumptionViolatedException;
import org.junit.runner.Description;
import org.junit.runner.Result;

/**
 * <p>If you need to respond to the events during a test run, extend <code>RunListener</code>
 * and override the appropriate methods. If a listener throws an exception while processing a 
 * test event, it will be removed for the remainder of the test run.</p>
 * 
 * <p>For example, suppose you have a <code>Cowbell</code>
 * class that you want to make a noise whenever a test fails. You could write:
 * <pre>
 * public class RingingListener extends RunListener {
 *    public void testFailure(Failure failure) {
 *       Cowbell.ring();
 *    }
 * }
 * </pre>
 * </p>
 * 
 * <p>To invoke your listener, you need to run your tests through <code>JUnitCore</code>.
 * <pre>
 * public void main(String... args) {
 *    JUnitCore core= new JUnitCore();
 *    core.addListener(new RingingListener());
 *    core.run(MyTestClass.class);
 * }
 * </pre>
 * </p>
 * @see org.junit.runner.JUnitCore
 */
public class RunListener {

	/**
	 * Called before any tests have been run.
	 * @param description describes the tests to be run
	 */
	public void testRunStarted(Description description) throws Exception {
	}
	
	/**
	 * Called when all tests have finished
	 * @param result the summary of the test run, including all the tests that failed
	 */
	public void testRunFinished(Result result) throws Exception {
	}
	
	/**
	 * Called when an atomic test is about to be started.
	 * @param description the description of the test that is about to be run 
	 * (generally a class and method name)
	 */
	public void testStarted(Description description) throws Exception {
	}

	/**
	 * Called when an atomic test has finished, whether the test succeeds or fails.
	 * @param description the description of the test that just ran
	 */
	public void testFinished(Description description) throws Exception {
	}

	/** 
	 * Called when an atomic test fails.
	 * @param failure describes the test that failed and the exception that was thrown
	 */
	public void testFailure(Failure failure) throws Exception {
	}

	/**
	 * Called when an atomic test flags that it assumes a condition that is
	 * false
	 * 
	 * @param failure
	 *            describes the test that failed and the
	 *            {@link AssumptionViolatedException} that was thrown
	 */
	public void testAssumptionFailure(Failure failure) {
	}

	/**
	 * Called when a test will not be run, generally because a test method is annotated 
	 * with {@link org.junit.Ignore}.
	 * 
	 * @param description describes the test that will not be run
	 */
	public void testIgnored(Description description) throws Exception {
	}
}