org.junit.ComparisonFailure с одинаковыми результатами - PullRequest
0 голосов
/ 10 мая 2018

Я клонировал существующий проект, где есть несколько юнит-тестов в JUnit-4.12. Эти тесты запускаются после каждого нажатия на удаленный депозитарий, и они успешно завершаются, но когда я запускаю их на своем локальном компьютере в Eclipse, они заканчиваются ComparisonFailure.

org.junit.ComparisonFailure expected:<xy> but was:<xy>

С этой ошибкой закончится каждый тест, где я пытаюсь сравнить отправленный json с существующим файлом json.

Тест:

@Test
public void calculateSignedCasesView() throws JsonProcessingException {
    Case case1 = prepareCase();
    getEm().persist(case1);
    SignedCasesViewFilter filter = new SignedCasesViewFilter(new LinkedHashSet<String>(Arrays.asList("testCode")), new Date(0), new Date(0));
    SignedCasesView view = reportService.calculateSignedCasesView(filter);
    String actual = getObjectMapper().writeValueAsString(view);
    String expected = readToString("signedCasesReportView01.json");
    Assert.assertEquals(expected, actual);
}

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

Результат: test result

Я попытался скопировать этот результат в MS Word, чтобы посмотреть, нет ли там никаких неразрывных пробелов (обсуждается здесь ), но все пробелы обычные. Или я пытался запустить тесты с другой кодировкой, но ничего не работает.

1 Ответ

0 голосов
/ 10 мая 2018

Если тесты работают в репозитории и не работают на вашем локальном компьютере, я думаю, что есть некоторая разница в кодировке или в способе создания json.Например, вы не показали функцию readToString или файл signatureCasesReportView01.json, которые могут отличаться в хранилище и в вашей локальной среде.Я предполагаю, что будут новые строки, что является наиболее распространенной проблемой в разных средах, и когда я смотрю в ваших тестовых примерах, нет никаких других специальных символов.

Например, это часто случается, когда вы копируете файлы в репозиторий git, и оно изменяется с помощью config core.autocrlf, и оно автоматически меняет \ r \ n с вашего локального компьютера Windows на \ n, потому что это unix наДругая сторона.И даже зафиксированный файл может не показывать разницу в клиенте, но на самом деле он может быть другим.Сравните байтовые потоки или построчно, и вы сможете найти разницу.

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