- Annotate the test class with
@RunWith(Parameterized.class) - Create a static method annotated with
@Parameterswhich returns a collection of arrays. Each array in the collection represents the test data and will be injected into the constructor of the test class - Make sure that the test class constructor matches the array items in the
Parametersmethod and stores the test data - Write some test methods annotated with
@Test
The example below shows a parameterised test which tests array sorting. The
data method returns a collection of arrays. Each array contains an input array and an expected output (sorted) array. When you run the test, the class is instantiated with each of these arrays and then the testSort method is called.
import static org.junit.Assert.assertArrayEquals;
import java.util.Arrays;
import java.util.Collection;
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 ArraySortTest {
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ new int[] { 1, 3, 2 }, new int[] { 1, 2, 3 } },
{ new int[] { 3, 2, 1 }, new int[] { 1, 2, 3 } },
{ new int[] { 1, 2, 3 }, new int[] { 1, 2, 3 } },
{ new int[] { 1, 1, 1 }, new int[] { 1, 1, 1 } },
{ new int[] { 1 }, new int[] { 1 } },
{ new int[] {}, new int[] {} },
});
}
private final int[] actual;
private final int[] expected;
public ArraySortTest(int[] actual, int[] expected){
this.actual = actual;
this.expected = expected;
}
@Test
public void testSort(){
Arrays.sort(actual);
assertArrayEquals(expected, actual);
}
}
DocumentationJavadocs: Class Parameterized
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.