1package org.junit.runner.notification;
2
3import org.junit.internal.AssumptionViolatedException;
4import org.junit.runner.Description;
5import org.junit.runner.Result;
6
7/**
8 * <p>If you need to respond to the events during a test run, extend <code>RunListener</code>
9 * and override the appropriate methods. If a listener throws an exception while processing a
10 * test event, it will be removed for the remainder of the test run.</p>
11 *
12 * <p>For example, suppose you have a <code>Cowbell</code>
13 * class that you want to make a noise whenever a test fails. You could write:
14 * <pre>
15 * public class RingingListener extends RunListener {
16 *    public void testFailure(Failure failure) {
17 *       Cowbell.ring();
18 *    }
19 * }
20 * </pre>
21 * </p>
22 *
23 * <p>To invoke your listener, you need to run your tests through <code>JUnitCore</code>.
24 * <pre>
25 * public void main(String... args) {
26 *    JUnitCore core= new JUnitCore();
27 *    core.addListener(new RingingListener());
28 *    core.run(MyTestClass.class);
29 * }
30 * </pre>
31 * </p>
32 * @see org.junit.runner.JUnitCore
33 */
34public class RunListener {
35
36	/**
37	 * Called before any tests have been run.
38	 * @param description describes the tests to be run
39	 */
40	public void testRunStarted(Description description) throws Exception {
41	}
42
43	/**
44	 * Called when all tests have finished
45	 * @param result the summary of the test run, including all the tests that failed
46	 */
47	public void testRunFinished(Result result) throws Exception {
48	}
49
50	/**
51	 * Called when an atomic test is about to be started.
52	 * @param description the description of the test that is about to be run
53	 * (generally a class and method name)
54	 */
55	public void testStarted(Description description) throws Exception {
56	}
57
58	/**
59	 * Called when an atomic test has finished, whether the test succeeds or fails.
60	 * @param description the description of the test that just ran
61	 */
62	public void testFinished(Description description) throws Exception {
63	}
64
65	/**
66	 * Called when an atomic test fails.
67	 * @param failure describes the test that failed and the exception that was thrown
68	 */
69	public void testFailure(Failure failure) throws Exception {
70	}
71
72	/**
73	 * Called when an atomic test flags that it assumes a condition that is
74	 * false
75	 *
76	 * @param failure
77	 *            describes the test that failed and the
78	 *            {@link AssumptionViolatedException} that was thrown
79	 */
80	public void testAssumptionFailure(Failure failure) {
81	}
82
83	/**
84	 * Called when a test will not be run, generally because a test method is annotated
85	 * with {@link org.junit.Ignore}.
86	 *
87	 * @param description describes the test that will not be run
88	 */
89	public void testIgnored(Description description) throws Exception {
90	}
91}
92
93
94