Использование юнит-тестов и тестовой базы данных
Как мне использовать NUnit и тестовую базу данных для проверки моего кода? Теоретически я бы использовал mocks (moq), но мой код больше в форме обслуживания и исправлял режим, и у меня нет возможности настроить все mocks.
Должен ли я просто создать тестовый проект, а затем написать тесты, которые фактически подключаются к моей тестовой базе данных, и выполнять код, как я хотел бы в приложении? Затем я проверяю код с утверждениями и проверяю, правильно ли я получаю ответ?
2 ответа
Как мне использовать NUnit и тестовую базу данных для проверки моего кода? Теоретически я бы использовал mocks (moq), но мой код больше в форме обслуживания и исправлял режим, и у меня нет возможности настроить все mocks.
Использование mocks полезно только в том случае, если вы хотите проверить точное поведение реализации класса. Это означает, что вы буквально утверждаете, что один класс вызывает определенный метод для другого класса. Например: я хочу утверждать, что Ninja.Attack() вызывает Sword.Unsheath().
Должен ли я просто создать тестовый проект, а затем написать тесты, которые фактически подключаются к моей тестовой базе данных, и выполнять код, как я хотел бы в приложении? Затем я проверяю код с утверждениями и проверяю, правильно ли я получаю ответ?
Это просто старый тестовый модуль. Если для этого нет препятствий, это хороший показатель того, что это будет ваш самый эффективный метод тестирования. Это практично и очень эффективно.
Есть еще один инструмент тестирования, который вы не упомянули, который называется заглушкой. Я настоятельно рекомендую вам прочитать эту классическую статью для получения дополнительной информации:
Поскольку мы не говорим о теоретическом случае, это то, что я хотел бы сделать - насколько я понимаю, вы хотите проверить, правильно ли ваше приложение подключается к БД и извлекает нужные данные или нет.
- Создать тестовую БД с той же схемой
- Добавьте некоторые фиктивные данные в этом
- Откройте соединение с БД из кода, запросите нужные данные
- Напишите утверждения, чтобы проверить, что вы получили от БД с тем, что вы ожидали
Кроме того, я не думаю, что эти тесты следует называть модульными тестами, потому что они не являются самодостаточными и зависят от других факторов, таких как, работает ли ваша база данных или нет. Я бы сказал, что они близки к интеграционным тестам, которые будут проверять, работают ли различные компоненты ваших приложений как ожидаемые при совместном использовании.
(Ответ Дэна ^^ в значительной степени суммирует то, что я хотел сказать)