Я хочу протестировать метод со следующей подписью:
@Test(dataProvider = "Passing List of List of Integer, expected")
public void myTest2(List<List<Integer>> input,
List<Integer> expected) {
List<Integer> actual = TestClass.testMethod(input);
assertThat(actual, is(equalTo(expected)));
}
Мой первый взлом на DataProvider использует Object[][]
, мне нравится формат, потому что он очень компактный. Но я не могу вписать это в требуемую подпись.
@DataProvider(name = "Passing List of List of Integer, expected")
public Object[][] getListOfList() {
return new Object[][] {
new Object[] {
new Object[][] { // Should be List<List<Integer>>
new Integer[] { 1, 2 },
new Integer[] { 1, 2 },
new Integer[] { 3, 2 },
new Integer[] { 2, 2 },
new Integer[] { 3, 2 },
},
new Integer[] { 3, 2 }, // expected output List<Integer>
},
new Object[] {
new Object[][] { // Should be List<List<Integer>>
new Integer[] { 1, 7 },
new Integer[] { 1, 8 },
new Integer[] { 3, 9 },
new Integer[] { 2, 3 },
new Integer[] { 4, 2 },
},
new Integer[] { 3, 2 }, // expected output List<Integer>
},
};
}
Я придумал следующее, но оно не компактное и не очень читаемое.
Есть ли лучший, более компактный способ создания этого типа DataProvider?
@DataProvider()
public Object[][] getListOfList2() {
return new Object[][] {
new Object[] {
new ArrayList<List<Integer>>() {
{
add(
new ArrayList<Integer>() {
{
add(1);
add(2);
}
});
add(
new ArrayList<Integer>() {
{
add(1);
add(2);
}
});
add(
new ArrayList<Integer>() {
{
add(3);
add(2);
}
});
}},
new ArrayList<Integer>() { // expected output List<Integer>
{
add(3);
add(2);
}
},
},
};