2013-04-08 3 views
1

Допустимо ли для модульного теста считать таблицу базы данных?Испытания, полагающиеся на присутствующие таблицы

Например, если у вас есть класс UserStore и связанный с ним тестовый класс UserStoreTest. Предположим, что этот класс является частью системы, которая при установке имеет «экземпляр» таблицы, для этого класса требуется имя foo_users. Так приемлемо ли для UserStoreTest считать эту таблицу и использовать ее? Кажется, лучше потребовать, чтобы класс UserStoreTest настраивал сама таблицу и не зависел от состояния системы, что является довольно глобальным. Действительно ли первый подход приемлем?

ответ

3

Лучший подход, вероятно, заключается в том, чтобы определить способ издеваться над вашей базой данных, а не быть фактически подключенным к реальной базе данных. Есть некоторые накладные расходы на поддержание макета базы данных, но есть множество преимуществ.

  • Говоря с реальной базой данных, вы можете сделать ваши юнит-тесты излишне медленными, особенно если вы спуститесь «настройте соединение с базой данных, а затем настройте таблицу для каждого теста».
  • Как я уже понял, ваши юнит-тесты могут закончиться в зависимости от изменчивых данных, которые могут негативно повлиять на процесс тестирования, поскольку он не находится под контролем набора тестов.
  • Модульные тесты могут выполняться на машине без доступа к базе данных. Это означает, что ваши юнит-тесты не могут случайно сломать базу данных или что-то в этом роде.
  • вероятно, некоторые другие причины

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

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