JUnit Time Test Example
In this example we are going to see how to use @Test annotation along with its optional parameter timeout in JUnit testing framework. Also, we will see how to run our test case from the command line by using the org.junit.runner.JUnitCore.
1. Create the java class to be tested
Create a folder named JUnitTest. This is the folder where your classes will be located. Using a text editor, create a Java class named FirstDayAtSchool.java. To make sure your file name is FirstDayAtSchool.java, (not FirstDayAtSchool.java.txt), first choose “Save as -> Save as type -> All files”, then type in the file name FirstDayAtSchool.java.
FirstDayAtSchool.java
public class FirstDayAtSchool {
public String[] prepareMyBag() {
String[] schoolbag = { "Books", "Notebooks", "Pens" };
System.out.println("Preparing my bag");
return (schoolbag);
}
public void printItems(String items) {
System.out.println("My school bag contains: " + items);
while (true);
}
}
2. Create JUnit test case
In the same directory (JUnitTest), use a text editor and create a java class named JunitTest.java with the following code.
JunitTest.java
import static org.junit.Assert.assertArrayEquals;
import java.util.Arrays;
import org.junit.Test;
public class JunitTest {
FirstDayAtSchool school = new FirstDayAtSchool();
String[] bag = {"Books", "Notebooks", "Pens"};
@Test
public void testPrepareMyBag() {
System.out.println("Inside testPrepareMyBag()");
assertArrayEquals(bag, school.prepareMyBag());
}
@Test(timeout=100)
public void testPrintItems() {
System.out.println("Inside printItems()");
school.printItems(Arrays.toString(bag));
}
}
Inside the method testPrintItems(), we can see that @Test annotation is followed by a parameter, called timeout. Timeout is an optional parameter supported by @Test annotation that causes a test to fail if it takes longer than the specified amount of time (measured in milliseconds).
For further details regarding the @Test annotation, the assertArrayEquals assertion (which are also mentioned in our code) and other JUnit Assertions and Annotations, you can have a look at JUnit using Assertions and Annotations Example.
3. Run your test case from the command line
You can run your JUnit test outside Eclipse, by using the org.junit.runner.JUnitCore class. This class provides the runClasses() method which allows you to execute one or several test classes. The return type of runClasses() method is an object of the type org.junit.runner.Result. This object can be used to collect information about the tests. Also, in case there is a failed test, you can use the object org.junit.runner.notification.Failure which holds description of the failed tests.
The procedure below shows how to run your test outside Eclipse.
In the directory JUnitTest, use a text editor and create a new Java class named JunitTestRunner.java with the following code.
JunitTestRunner.java
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class JunitTestRunner {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(JunitTest.class);
for (Failure fail : result.getFailures()) {
System.out.println(fail.toString());
}
if (result.wasSuccessful()) {
System.out.println("All tests finished successfully...");
}else{
System.out.println("The test failed..");
}
}
}
- Open command prompt and move down directories so as to find the directory where your java classes are located:
C:\Users\konstantina>cd JUnitTest
Attention: If your classes are located inside a package, for example package com.javacodegeeks.core.junit, you can have a look at Download NOW!

