выполнить testng параметризованные тесты без поставщика данных - PullRequest
0 голосов
/ 31 марта 2019

У меня есть простой тест, который выглядит следующим образом

public void shouldCompareEntities(Person input1, Person input2, String expected) throws Exception {
    Javers javers = JaversBuilder.javers()
        .withListCompareAlgorithm(ListCompareAlgorithm.LEVENSHTEIN_DISTANCE)
        .build();
    Diff diff = javers.compare(input1, input2);
    String jsonDiff = javers.getJsonConverter().toJson(diff);

    JSONAssert.assertEquals(expected, jsonDiff, JSONCompareMode.STRICT);
}

Это параметризованный тест, который использует поставщик данных.У меня есть набор папок в ресурсах, которые содержат данные для параметризованного теста.

json/
    case1/
        expected.json
        input-1.json
        input-2.json
    case2/
        expected.json
        input-1.json
        input-2.json

У меня есть dataProvider

@DataProvider(name = "jsonDiff", parallel = true) // runs in a separate of test pool
public Object[][] jsonDiffProvider() {
    Gson gson = new Gson();

    List<Path> resourceFolder = listResourceFolder("/json");
    Map<Path, List<Path>> testFiles = aggregateCaseFiles(resourceFolder);

    assertNotNull(testFiles);

    List<Object[]> arrays = testFiles.entrySet()
        .stream()
        .map(entry -> {
            List<Path> caseFiles = entry.getValue(); // sorted -> expected, input-1, input-2

            JsonReader input1Reader = fileToReader(caseFiles.get(1));
            JsonReader input2Reader = fileToReader(caseFiles.get(2));
            String expectedJson = fileToString(caseFiles.get(0));

            Person input1 = toObject(gson, input1Reader, Person.class);
            Person input2 = toObject(gson, input2Reader, Person.class);
            return new Object[] { input1, input2, expectedJson }; })
        .collect(Collectors.toList());

    Object[][] cases = new Object[arrays.size()][3];
    int i = 0;
    for (Object[] arr : arrays) {
        System.arraycopy(arr, 0, cases[i++], 0, 3);
    }

    return cases;
}

Он в основном читает все файлы, конвертирует ихсоздать массив массивов и выполнить тесты.Это работает нормально.

Мой вопрос: есть ли способ выполнить все случаи, не агрегируя их в поставщике данных?

Поскольку это не выглядит так,Эффективная реализация, поскольку папки case не зависят друг от друга, поэтому, вероятно, можно выполнять тесты для каждой папки отдельно.Но я не уверен.

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