Ответ 1
Пока вы можете использовать определенные форматирующие элементы для преобразования и вставки любого текстового файла или длинного литерала как строка Java (например, с перерывами в новой строке, необходимыми экранами и т.д.), я не могу думать о частых ситуациях, когда вам нужны эти возможности.
Тенденция в программном обеспечении заключается в том, чтобы отделить код от данных, на которых он работает. Большие текстовые разделы, даже если они предназначены только для отображения или сравнения, являются данными и, таким образом, обычно хранятся снаружи. Стоимость чтения файла (или даже кэширования результата в памяти) довольно низкая. Интернационализация проще. Изменение проще. Управление версиями проще. Другие инструменты (например, проверки орфографии) могут быть легко использованы.
Я согласен с тем, что в случае модульных тестов, где вы хотите сравнить вещи с макетом, вам понадобятся широкомасштабные текстовые сравнения. Однако, когда вы имеете дело с такими большими файлами, вы, как правило, испытываете тесты, которые могут работать на нескольких разных больших входах для создания нескольких больших выходов, поэтому почему бы просто не загружать тестовые файлы из соответствующих файлов, а не встраивать их?
То же самое происходит с XML. На самом деле, для XML я бы сказал, что во многих случаях вы хотели бы прочитать XML и построить дерево DOM, которое вы затем сравнили бы, а не сравнить текст, на которые могут влиять пробелы. И вручную создание дерева XML в вашем unit test является уродливым.