TestNG Поставщик данных для подписи (Список <Список <Integer>>, Список <Integer>) - PullRequest
0 голосов
/ 03 мая 2019

Я хочу протестировать метод со следующей подписью:

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

    };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...