1 package org.junit.runner;
2
3 import org.junit.runner.notification.RunNotifier;
4
5 /**
6 * A <code>Runner</code> runs tests and notifies a {@link org.junit.runner.notification.RunNotifier}
7 * of significant events as it does so. You will need to subclass <code>Runner</code>
8 * when using {@link org.junit.runner.RunWith} to invoke a custom runner. When creating
9 * a custom runner, in addition to implementing the abstract methods here you must
10 * also provide a constructor that takes as an argument the {@link Class} containing
11 * the tests.
12 *
13 * <p>The default runner implementation guarantees that the instances of the test case
14 * class will be constructed immediately before running the test and that the runner
15 * will retain no reference to the test case instances, generally making them
16 * available for garbage collection.
17 *
18 * @see org.junit.runner.Description
19 * @see org.junit.runner.RunWith
20 * @since 4.0
21 */
22 public abstract class Runner implements Describable {
23 /*
24 * (non-Javadoc)
25 * @see org.junit.runner.Describable#getDescription()
26 */
27 public abstract Description getDescription();
28
29 /**
30 * Run the tests for this runner.
31 *
32 * @param notifier will be notified of events while tests are being run--tests being
33 * started, finishing, and failing
34 */
35 public abstract void run(RunNotifier notifier);
36
37 /**
38 * @return the number of tests to be run by the receiver
39 */
40 public int testCount() {
41 return getDescription().testCount();
42 }
43 }