When writing unit / integration tests, you often want to execute something multiple times, with different configurations / parameters / arguments every time. For instance, if you want to pass a “limit” or “timeout” or any other argument value of 1, 10, and 100, you could do this:
@Test
public void test() {
runCode(1);
runCode(10);
runCode(100);
}
private void runCode(int argument) {
// Run the actual test
assertNotNull(new MyObject(argument).execute());
}
Exracting methods is the most obvious approach, but it can quickly get nasty, as these extracted methods are hardly re-usable outside of that single test-case and thus don’t really deserve being put in their own methods. Instead, just use this little trick:
@Test
public void test() {
// Repeat the contents 3 times, for values 1, 10, 100
for (int argument : new int[] { 1, 10, 100 }) {
// Run the actual test
assertNotNull(new MyObject(argument).execute());
}
// Alternatively, use Arrays.asList(), which has a similar effect:
for (Integer argument : Arrays.asList(1, 10, 100)) {
// Run the actual test
assertNotNull(new MyObject(argument).execute());
}
}