1. Overview
In this tutorial, we'll understand how to run JUnit 5 tests directly from the command line.
2. Test Scenarios
Previously, we've covered how to run a JUnit test programmatically. For our examples, we're going to use the same JUnit tests:
public class FirstUnitTest {
@Test
public void whenThis_thenThat() {
assertTrue(true);
}
@Test
public void whenSomething_thenSomething() {
assertTrue(true);
}
@Test
public void whenSomethingElse_thenSomethingElse() {
assertTrue(true);
}
}
public class SecondUnitTest {
@Test
public void whenSomething_thenSomething() {
assertTrue(true);
}
@Test
public void whensomethingElse_thenSomethingElse() {
assertTrue(true);
}
}
3. Running a JUnit 5 Test
We can run a JUnit 5 test case using JUnit's console launcher. The executable for this jar can be downloaded from Maven Central, under the junit-platform-console-standalone directory.
Also, we'll need a directory that will contain all our compiled classes:
$ mkdir target
Let's see how we can run different test cases using the console launcher.
3.1. Run a Single Test Class
Before we run the test class, let's compile it:
$ javac -d target -cp target:junit-platform-console-standalone-1.7.2.jar src/test/java/com/baeldung/commandline/FirstUnitTest.java
Now, we'll run the compiled test class using the Junit console launcher:
$ java -jar junit-platform-console-standalone-1.7.2.jar --class-path target --select-class com.baeldung.commandline.FirstUnitTest
This will give us test run results:
Test run finished after 60 ms
[ 3 containers found ]
[ 0 containers skipped ]
[ 3 containers started ]
[ 0 containers aborted ]
[ 3 containers successful ]
[ 0 containers failed ]
[ 3 tests found ]
[ 0 tests skipped ]
[ 3 tests started ]
[ 0 tests aborted ]
[ 3 tests successful ]
[ 0 tests failed ]
3.2. Run Multiple Test Classes
Again, let's compile the test classes we want to run:
$ javac -d target -cp target:junit-platform-console-standalone-1.7.2.jar src/test/java/com/baeldung/commandline/FirstUnitTest.java src/test/java/com/baeldung/commandline/SecondUnitTest.java
We'll now run the compiled test classes using the console launcher:
$ java -jar junit-platform-console-standalone-1.7.2.jar --class-path target --select-class com.baeldung.commandline.FirstUnitTest --select-class com.baeldung.commandline.SecondUnitTest
Our results now show that all five test methods were successful:
Test run finished after 68 ms
...
[ 5 tests found ]
...
[ 5 tests successful ]
[ 0 tests failed ]
3.3. Run All Test Classes in a Package
To run all the test classes in a package, let's compile all the test classes present in our package:
$ javac -d target -cp target:junit-platform-console-standalone-1.7.2.jar src/test/java/com/baeldung/commandline/*.java
Again, we'll run the compiled test classes of our package:
$ java -jar junit-platform-console-standalone-1.7.2.jar --class-path target --select-package com.baeldung.commandline
...
Test run finished after 68 ms
...
[ 5 tests found ]
...
[ 5 tests successful ]
[ 0 tests failed ]
3.4. Run All the Test Classes
Let's run all the test cases:
$ java -jar junit-platform-console-standalone-1.7.2.jar --class-path target --scan-class-path
...
Test run finished after 68 ms
...
[ 5 tests found ]
...
[ 5 tests successful ]
[ 0 tests failed ]
4. Running JUnit Using Maven
If we're using Maven as our build tool, we can execute test cases directly from the command line.
4.1. Running a Single Test Case
To run a single test case on the console, let's execute the following command by specifying the test class name:
$ mvn test -Dtest=SecondUnitTest
This will give us test run results:
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.069 s - in com.baeldung.commandline.SecondUnitTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.211 s [INFO] Finished at: 2021-08-02T23:13:41+05:30
[INFO] ------------------------------------------------------------------------
4.2. Run Multiple Test Cases
To run multiple test cases on the console, let's execute the command, specifying the names of all the test classes we want to execute:
$ mvn test -Dtest=FirstUnitTest,SecondUnitTest
...
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.069 s - in com.baeldung.commandline.SecondUnitTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.069 s - in com.baeldung.commandline.FirstUnitTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.211 s
[INFO] Finished at: 2021-08-02T23:13:41+05:30
[INFO] ------------------------------------------------------------------------
4.3. Run All Test Cases in a Package
To run all the test cases within a package, on the console, we need to specify the package name as part of the command:
$ mvn test -Dtest="com.baeldung.commandline.**"
...
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.069 s - in com.baeldung.commandline.SecondUnitTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.069 s - in com.baeldung.commandline.FirstUnitTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.211 s
[INFO] Finished at: 2021-08-02T23:13:41+05:30
[INFO] ------------------------------------------------------------------------
4.4. Run All Test Cases
Finally, to run all the test cases using Maven on the console, we simply execute mvn clean test:
$ mvn clean test
...
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.069 s - in com.baeldung.commandline.SecondUnitTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.069 s - in com.baeldung.commandline.FirstUnitTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.211 s
[INFO] Finished at: 2021-08-02T23:13:41+05:30
[INFO] ------------------------------------------------------------------------
5. Conclusion
In this article, we've learned how to run JUnit tests directly from the command line, covering JUnit 5 both with and without Maven.
Implementation of the examples shown here is available over on GitHub.