用于签名的TestNG Dataprovider(List <list <integer >>,List <integer>)

时间:2019-05-03 06:35:01

标签: testng testng-dataprovider

我要测试具有以下签名的方法:

@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);
              }
            }, 
        },

    };

0 个答案:

没有答案