Соберите объект JSON в файл, если тест Junit не пройден - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть ~ 50 JSON массивов в виде массива моделей, подключаемых к юнит-тестам для сравнения результирующих конфигов. Каждый файл выглядит так: 0. json 1. json ... и т. Д.

[{model1}, {model2}, {model3}] Я пытаюсь запустить модульные тесты для сравнения результирующие конфиги и хотят запускать тесты таким образом, чтобы сам тест продолжал работать и собирать модели в случае сбоя утверждения и выводить его в файл json где-то.

Скажите, что модель2 не работает, я хочу чтобы собрать model2 в выходной файл. json в виде массива

До сих пор код выглядит следующим образом, даже если тест выполняется файл за файлом, это нормально, но сэкономит мне несколько дней усилий:

@Test
public void compareAWithB() throws Exception {
    File lbJsonFile1 = new File("src/test/resources/iad_ad3/6.json");
        compareAWithBHelper(lbJsonFile1);
}

public void compareAWithBHelper(File lbJsonFile) throws Exception {
        Model[] dtos = new ObjectMapper().readValue(lbJsonFile, Model[].class);
        for(Model dto : dtos) {
            Model model = ModelConverter.apiToDao(dto);
            String A = doSomeThing();
            String B = doSomething2();

            Assert.assertEquals(A,B);
//Required: if assert fails, collect the json object and continue
}

Я пытался использовать SoftAssertions в AssertJ, но странно, он не распечатывал все объекты json ИЛИ возможно, я не совсем правильно понял метод checkThat ().

Попробовал с помощью collectors.check, что не может заставить его работать надежно. Это производственная зона, поэтому у вас не должно быть места для ошибок, и вы хотите уменьшить ручные усилия.

Сделана еще одна попытка использовать коллекторы в качестве одной из публикаций в stackoverflow, не удалось заставить ее работать надежно

/*try {
                collector.checkThat(A, CoreMatchers.equalTo(B));
            } catch (AssertionError error) {
                System.out.println(dto.toString());
                throw new AssertionError(error.getMessage());
}*/

Может кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 22 апреля 2020

Если вы хотите собрать все ошибки утверждений и не останавливаться на первой ошибке, то мягкие утверждения - хороший вариант для использования. Для начала с мягкими утверждениями вы можете следовать руководству, доступному здесь: https://assertj.github.io/doc/#assertj -core-soft-assertions .

collector.checkThat не принадлежит AssertJ (и ничего из ваших примеров кода), это немного сбивает с толку, я бы посоветовал написать воспроизводимый тест, чтобы люди могли легче помочь.

В качестве альтернативы, если вы имеете дело с JSON, вы можете попытаться обратиться по адресу https://github.com/lukas-krecan/JsonUnit, что обеспечивает утверждения гражданина первого класса JSON.

Надежда это помогает.

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