Использование юнит-тестов и тестовой базы данных

Как мне использовать NUnit и тестовую базу данных для проверки моего кода? Теоретически я бы использовал mocks (moq), но мой код больше в форме обслуживания и исправлял режим, и у меня нет возможности настроить все mocks.

Должен ли я просто создать тестовый проект, а затем написать тесты, которые фактически подключаются к моей тестовой базе данных, и выполнять код, как я хотел бы в приложении? Затем я проверяю код с утверждениями и проверяю, правильно ли я получаю ответ?

2 ответа

Решение

Как мне использовать NUnit и тестовую базу данных для проверки моего кода? Теоретически я бы использовал mocks (moq), но мой код больше в форме обслуживания и исправлял режим, и у меня нет возможности настроить все mocks.

Использование mocks полезно только в том случае, если вы хотите проверить точное поведение реализации класса. Это означает, что вы буквально утверждаете, что один класс вызывает определенный метод для другого класса. Например: я хочу утверждать, что Ninja.Attack() вызывает Sword.Unsheath().

Должен ли я просто создать тестовый проект, а затем написать тесты, которые фактически подключаются к моей тестовой базе данных, и выполнять код, как я хотел бы в приложении? Затем я проверяю код с утверждениями и проверяю, правильно ли я получаю ответ?

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

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

http://martinfowler.com/articles/mocksArentStubs.html

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

  1. Создать тестовую БД с той же схемой
  2. Добавьте некоторые фиктивные данные в этом
  3. Откройте соединение с БД из кода, запросите нужные данные
  4. Напишите утверждения, чтобы проверить, что вы получили от БД с тем, что вы ожидали

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

(Ответ Дэна ^^ в значительной степени суммирует то, что я хотел сказать)

Другие вопросы по тегам