При написании модульных тестов, связанных с XML (например, тестируйте класс, который читает/генерирует XML), я использовал для записи утвержденных результатов XML-String/my input XML String в отдельных файлах рядом с моим модульным тестом. Предположим, у меня есть класс «MyTransformer», который преобразует один формат XML в другой. Тогда я хотел бы создать три файла все в одном пакете:Недоступен ли доступ к файлам в модульных тестах?
- MyTransformerTest.java
- MyTransformerTestSampleInput.xml
- MyTransformerTestExpectedOutput.xml
Тогда мое утверждение может выглядеть следующим образом (упрощенный псевдокоде по причинам простоты):
Reader transformed = MyTransformer.transform(getResourceAsStream("MyTransformerTestSampleInput.xml")));
Reader expected = getResourceAsStream("MyTransformerTestExpectedOutput.xml");
assertXMLEqual(expected, transformed);
Однако коллега ague сказал мне, что доступ к файлу, который у меня есть в этом модульном тесте, неприемлем. Он предложил создать литеральную строчную константу (private static final String), содержащую мое содержимое XML-файла, возможно, в отдельном классе groovy из-за преимущества многострочных строк, а не для записи файла XML в файлы.
Мне не нравится идея строковых строковых констант, потому что даже если у меня есть многострочные строки в groovy, я все еще теряю подсветку синтаксиса и все другие полезные функции моего XML-редактора, которые сразу говорят мне, если мой XML имеет синтаксис ошибки и т. д.
Как вы думаете? Действительно ли доступ к файлу плохой? Если да: почему? Если нет, то почему все нормально?
Вы можете найти папку hava test/resources, где вы держите все это. Было бы лучше, если бы у вас был какой-то XML-шаблон, который вы могли бы затем параметризовать. Маленькая строка XML или использование паза для представления строки не очень хорошая идея (на мой взгляд ...) Возможно, макет будет полезен, это зависит – Damian0o