Форматирование вывода так, чтобы Intellij Idea показывала различия для двух текстов
Я хотел бы иметь возможность печатать в журналах сообщение, для которого идея intellij представляла бы хороший способ сравнения двух объектов (строк). Это происходит автоматически для сообщения об ошибке, зарегистрированного сбойным сообщением junit:
assertEquals("some\nString", "another\nString");
=>
org.junit.ComparisonFailure: <Click to see difference>
at org.junit.Assert.assertEquals(Assert.java:123)
at org.junit.Assert.assertEquals(Assert.java:145)
at com.something.DummyTest.testDummy(DummyTest.java:89)
< Нажмите, чтобы увидеть разницу > запись фактически отображается как ссылка в окне вывода Intellij Idea. Когда вы нажимаете на ссылку, открывается окно сравнения, которое показывает два значения (так же, как вы бы сравнили два файла).
Простое исключение исключается, потому что я хотел бы регистрировать несколько объектов для сравнения. Я уже пробовал записывать текст, но мне не удалось убедить идею сравнить два текста.
Ответы
Ответ 1
IntelliJ IDEA использует жестко закодированное регулярное выражение. Если текст соответствует шаблону, он предложит щелкнуть, чтобы просмотреть разницу.
Образец:
expected:<bla-blah> but was:<blah-blah-blah>
Вывод должен соответствовать формату assertEquals
или assertThat
.
Точные шаблоны несколько разбросаны по коду в IDEA, но некоторые из них, например, здесь.