У меня есть простой тест, который выглядит следующим образом
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
не зависят друг от друга, поэтому, вероятно, можно выполнять тесты для каждой папки отдельно.Но я не уверен.