Java – How to programmatically run all the JUnit tests in the Java application

eclipsejavajunitjunit4

From Eclipse I can easily run all the JUnit tests in my application.

I would like to be able to run the tests on target systems from the application jar, without Eclipse (or Ant or Maven or any other development tool).

I can see how to run a specific test or suite from the command line.

I could manually create a suite listing all the tests in my application, but that seems error prone – I'm sure at some point I'll create a test and forget to add it to the suite.

The Eclipse JUnit plugin has a wizard to create a test suite, but for some reason it doesn't "see" my test classes. It may be looking for JUnit 3 tests, not JUnit 4 annotated tests.

I could write a tool that would automatically create the suite by scanning the source files.

Or I could write code so the application would scan it's own jar file for tests (either by naming convention or by looking for the @Test annotation).

It seems like there should be an easier way. What am I missing?

Best Answer

According to a recent thread on the JUnit mailing list, ClasspathSuite can collect and run all JUnit tests on the classpath. It is not precisely what you want, since it is a class-level annotation, but the source is available, so you may be able to extend its internal discovery mechanism.