package org.junit.runner;

import junit.runner.Version;
import org.junit.internal.JUnitSystem;
import org.junit.internal.RealSystem;
import org.junit.internal.TextListener;
import org.junit.internal.runners.JUnit38ClassRunner;
import org.junit.runner.notification.RunListener;
import org.junit.runner.notification.RunNotifier;

JUnitCore is a facade for running tests. It supports running JUnit 4 tests, JUnit 3.8.x tests, and mixtures. To run tests from the command line, run java org.junit.runner.JUnitCore TestClass1 TestClass2 .... For one-shot test runs, use the static method runClasses(Class<?>[]). If you want to add special listeners, create an instance of JUnitCore first and use it to run the tests.
See Also:
Since:4.0
/** * <code>JUnitCore</code> is a facade for running tests. It supports running JUnit 4 tests, * JUnit 3.8.x tests, and mixtures. To run tests from the command line, run * <code>java org.junit.runner.JUnitCore TestClass1 TestClass2 ...</code>. * For one-shot test runs, use the static method {@link #runClasses(Class[])}. * If you want to add special listeners, * create an instance of {@link org.junit.runner.JUnitCore} first and use it to run the tests. * * @see org.junit.runner.Result * @see org.junit.runner.notification.RunListener * @see org.junit.runner.Request * @since 4.0 */
public class JUnitCore { private final RunNotifier notifier = new RunNotifier();
Run the tests contained in the classes named in the args. If all tests run successfully, exit with a status of 0. Otherwise exit with a status of 1. Write feedback while tests are running and write stack traces for all failed tests after the tests all complete.
Params:
  • args – names of classes in which to find tests to run
/** * Run the tests contained in the classes named in the <code>args</code>. * If all tests run successfully, exit with a status of 0. Otherwise exit with a status of 1. * Write feedback while tests are running and write * stack traces for all failed tests after the tests all complete. * * @param args names of classes in which to find tests to run */
public static void main(String... args) { Result result = new JUnitCore().runMain(new RealSystem(), args); System.exit(result.wasSuccessful() ? 0 : 1); }
Run the tests contained in classes. Write feedback while the tests are running and write stack traces for all failed tests after all tests complete. This is similar to main(String[]), but intended to be used programmatically.
Params:
  • classes – Classes in which to find tests
Returns:a Result describing the details of the test run and the failed tests.
/** * Run the tests contained in <code>classes</code>. Write feedback while the tests * are running and write stack traces for all failed tests after all tests complete. This is * similar to {@link #main(String[])}, but intended to be used programmatically. * * @param classes Classes in which to find tests * @return a {@link Result} describing the details of the test run and the failed tests. */
public static Result runClasses(Class<?>... classes) { return runClasses(defaultComputer(), classes); }
Run the tests contained in classes. Write feedback while the tests are running and write stack traces for all failed tests after all tests complete. This is similar to main(String[]), but intended to be used programmatically.
Params:
  • computer – Helps construct Runners from classes
  • classes – Classes in which to find tests
Returns:a Result describing the details of the test run and the failed tests.
/** * Run the tests contained in <code>classes</code>. Write feedback while the tests * are running and write stack traces for all failed tests after all tests complete. This is * similar to {@link #main(String[])}, but intended to be used programmatically. * * @param computer Helps construct Runners from classes * @param classes Classes in which to find tests * @return a {@link Result} describing the details of the test run and the failed tests. */
public static Result runClasses(Computer computer, Class<?>... classes) { return new JUnitCore().run(computer, classes); }
Params:
  • system –
  • args – from main()
/** * @param system * @param args from main() */
Result runMain(JUnitSystem system, String... args) { system.out().println("JUnit version " + Version.id()); JUnitCommandLineParseResult jUnitCommandLineParseResult = JUnitCommandLineParseResult.parse(args); RunListener listener = new TextListener(system); addListener(listener); return run(jUnitCommandLineParseResult.createRequest(defaultComputer())); }
Returns:the version number of this release
/** * @return the version number of this release */
public String getVersion() { return Version.id(); }
Run all the tests in classes.
Params:
  • classes – the classes containing tests
Returns:a Result describing the details of the test run and the failed tests.
/** * Run all the tests in <code>classes</code>. * * @param classes the classes containing tests * @return a {@link Result} describing the details of the test run and the failed tests. */
public Result run(Class<?>... classes) { return run(defaultComputer(), classes); }
Run all the tests in classes.
Params:
  • computer – Helps construct Runners from classes
  • classes – the classes containing tests
Returns:a Result describing the details of the test run and the failed tests.
/** * Run all the tests in <code>classes</code>. * * @param computer Helps construct Runners from classes * @param classes the classes containing tests * @return a {@link Result} describing the details of the test run and the failed tests. */
public Result run(Computer computer, Class<?>... classes) { return run(Request.classes(computer, classes)); }
Run all the tests contained in request.
Params:
  • request – the request describing tests
Returns:a Result describing the details of the test run and the failed tests.
/** * Run all the tests contained in <code>request</code>. * * @param request the request describing tests * @return a {@link Result} describing the details of the test run and the failed tests. */
public Result run(Request request) { return run(request.getRunner()); }
Run all the tests contained in JUnit 3.8.x test. Here for backward compatibility.
Params:
  • test – the old-style test
Returns:a Result describing the details of the test run and the failed tests.
/** * Run all the tests contained in JUnit 3.8.x <code>test</code>. Here for backward compatibility. * * @param test the old-style test * @return a {@link Result} describing the details of the test run and the failed tests. */
public Result run(junit.framework.Test test) { return run(new JUnit38ClassRunner(test)); }
Do not use. Testing purposes only.
/** * Do not use. Testing purposes only. */
public Result run(Runner runner) { Result result = new Result(); RunListener listener = result.createListener(); notifier.addFirstListener(listener); try { notifier.fireTestRunStarted(runner.getDescription()); runner.run(notifier); notifier.fireTestRunFinished(result); } finally { removeListener(listener); } return result; }
Add a listener to be notified as the tests run.
Params:
  • listener – the listener to add
See Also:
/** * Add a listener to be notified as the tests run. * * @param listener the listener to add * @see org.junit.runner.notification.RunListener */
public void addListener(RunListener listener) { notifier.addListener(listener); }
Remove a listener.
Params:
  • listener – the listener to remove
/** * Remove a listener. * * @param listener the listener to remove */
public void removeListener(RunListener listener) { notifier.removeListener(listener); } static Computer defaultComputer() { return new Computer(); } }