JUnit-Как написать тест для метода разбора файла? - PullRequest
2 голосов
/ 19 мая 2011

Я новичок в тестировании разработки и пытаюсь избавиться от своих привычек.

Большая часть функционального тестируемого кода в моем приложении связана с вводом-выводом базы данных или чтением / записью файлов,Android предоставляет некоторые расширения для работы с тестами базы данных, но я заблудился о том, как написать тесты для чтения файла примера.

Вот пример из моего приложения: импорт XML.

Метод parseXML() читает файл с довольно простой схемой и напрямую записывает его содержимое в базу данных.Есть несколько под-методов, которые анализируют содержимое разных узлов (например, parseNote() или parseList()).

Нужно ли предоставлять образец файла?Если так, то как?Как мне вообще начать тестировать такой код?

Редактировать Пример файла:

<lists>
<list title="Sample List">
<note title="Note 1" details="Details 1"/>
<note title="Note 2" details="Details 2"/>
<note title="Note 3" details="Details 3"/>
</list>
</lists>

Ответы [ 3 ]

2 голосов
/ 19 мая 2011

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

Вместо этого вам следует протестировать процесс демаршаллинга, то есть правильно ли ваш код извлекает данные из документа XML.Создайте класс, единственная цель которого состоит в том, чтобы хранить проанализированные данные XML (класс POJO / bean, содержащий только свойства и методы получения / установки).Пусть ваш метод parseXML() выбросит все данные в этот класс и вернет его (он не должен ничего сохранять в базе данных).Затем все, что должен сделать ваш модульный тест, - это убедиться, что свойства объекта имеют правильные значения.

Как сказал @ Woot4Moo, вы должны также проверить, как метод обрабатывает непредвиденные ошибки, такие как несуществующий файл.или не XML-файл.

Кроме того, если ваш XML соответствует схеме, вы можете проверить JAX-B.Это платформа, которая автоматически создает объект Java-бина из XML-документа, учитывая, что XML-документ придерживается схемы.Вам не нужно самостоятельно писать код синтаксического анализа.

0 голосов
/ 11 июня 2011

Я бы смоделировал базу данных и проверил бы, правильно ли синтаксический анализатор взаимодействует с ней при передаче фрагментов XML. Или, если вы не знакомы с фальшивыми фреймворками, вы можете проанализировать XML в промежуточный класс 'value' (все последние поля) и выполнить утверждения равенства.

Вы можете создавать эти фрагменты, используя класс XML-компоновщика. Для базового анализа и построения XML-файлов использовать существующую библиотеку DOM будет намного проще, чем писать ее самостоятельно.

0 голосов
/ 19 мая 2011

Вот что вы захотите проверить:

  1. Правильно сформированный файл XML
  2. Неверно сформированный XML-файл
  3. XML-файл размером> 2 ГБ
  4. XML-файл, который не существует
  5. XML-файл, сохраненный как текстовый файл (на самом деле это только показывает, что вы не полагаетесь на расширение)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...