Parameterized Tests
With the parameterized test feature of JUnit, you can test the same functionalities with different parameters (https://github.com/junit-team/junit4/wiki/Parameterized-tests). To do so, you need to add at least two annotations of @RunWith and @Parameters to your test class. Here is an example from the JUnit wiki page (https://github.com/junit-team/junit4/wiki/Parameterized-tests#identify-individual-test-cases).
import static org.junit.Assert.assertEquals; import java.util.Arrays; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class) public class FibonacciTest { @Parameters(name = "{index}: fib({0})={1}") public static Iterable<Object[]> data() { return Arrays.asList(new Object[][] { { 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 } }); } private int input; private int expected; public FibonacciTest(int input, int expected) { this.input = input; this.expected = expected; } @Test public void test() { assertEquals(expected, Fibonacci.compute(input)); } } public class Fibonacci { ... }
It is highly recommended to provide a test name explicitly to easily figure out failed tests.