2010-01-05 6 views
1

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

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

Будет также оценен некоторый способ запуска некоторого закрытого кода.

Как мне это сделать?

ответ

2

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

Обычно один тест состоит из трех этапов:

  • Расположить - подготовить прибор: экземпляр класса для тестирования, возможно, другие объекты, необходимые
  • Act - вызвать метод для тестирования
  • Assert - проверить ожидания

Единичные тесты обычно остаются вне внешних ресурсов, таких как файлы и базы данных. Вместо этого mock objects используются для удовлетворения зависимостей проверяемого класса.

Однако, в зависимости от типа приложения, вы можете попробовать запустить тесты из самого приложения. Это не «чистое» модульное тестирование, но может быть ценным в любом случае, особенно если код не был написан с учетом модульного тестирования, он может быть недостаточно «гибким», чтобы его можно было тестировать на единицу.

Для этого требуется специальный режим выполнения с параметром «-test», который будет инициализировать приложение в обычном режиме, а затем вызовет тесты, которые будут имитировать входы и использовать утверждения для проверки реакции приложения как ожидалось. Аналогичным образом, можно было бы вызвать код выключения и проверить с помощью утверждений, если соединение с базой данных будет закрыто (если объекты не удалены).

Этот подход имеет несколько недостатков по сравнению с блок-тестами: он зависит от конфигурационных файлов (программное обеспечение может вести себя по-разному в зависимости от параметров), от базы данных (по ее содержанию и от возможности подключения к ней), тесты не изолированы ... Два первых можно преодолеть с использованием значений по умолчанию для конфигурации и подключения к тестовой базе данных в режиме test.

0

Вы определяете BOOST_TEST_MAIN? Если это так, и у вас нет собственной функции main (где в противном случае был бы введен код инициализации), вы могли бы использовать какой-либо вид одноэлементного объекта, который предоставляет функцию init, которую вы можете вызвать перед каждым тестом, если потребуется.

Смежные вопросы