I've started using the new(ish) JUnit Theories feature for parameterizing tests. If your Theory is set up to take, for example, an Integer
argument, the Theories
test runner picks up any Integer
s marked with @DataPoint
:
@DataPoint
public static Integer number = 0;
as well as any Integer
s in arrays:
@DataPoints
public static Integer[] numbers = {1, 2, 3};
or even methods that return arrays like:
@DataPoints
public static Integer[] moreNumbers() { return new Integer[] {4, 5, 6}; };
but not in List
s. The following does not work:
@DataPoints
public static List<Integer> numberList = Arrays.asList(7, 8, 9);
Edit: It looks like other collections are not supported either, as this does not work.
@DataPoints
public static Collection<Integer> numberList = new HashSet<Integer>() {{
add(7);
add(8);
add(9);
}};
Am I doing something wrong, or do List
s, Set
s, etc. really not work? Was it a conscious design choice not to allow the use of Collection
s as data points, or is that just a feature that hasn't been implemented yet? Are there plans to implement it in a future version of JUnit?
(I'm currently using version 4.8.1 whereas the newest version is 4.8.2 but it looks like this is not something that was added in 4.8.2)
I've looked at the issue, and it seems there is now a pending commit for it. The reason that it wasn't in there seems to be simply that nobody asked for it and it's quite complex to do (as you've proven in your patch)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With