我要测试具有以下签名的方法:
@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);
}
},
},
};