This question about unit tests зажег другую вещь, которая меня беспокоила. Я пошел туда и обратно по трем способам выполнения модульных тестов при попадании в базу данных.Единичные тесты и база данных
- Создайте имитирующие объекты и подключите их. Это имеет то преимущество, что вам не нужна база данных, но это занимает много времени, и я не уверен, сколько возврата инвестиций я получаю. Я немного вхожу в МОК и moq, но это все еще кажется болезненным.
- Создайте сценарии базы данных настройки и разрыва для создания известных случаев и проверьте их. Опять же, это может быть трудоемким, но все же легче создавать, чем макет объектов большую часть времени. И другие люди на работе все еще могут работать, полагая, что у них есть SQL-сервер на своем локальном хосте.
- Вручную проверьте базу данных разработчиков и измените модульные тесты. Интенсивно ручная работа, но если у меня есть «тестовый набор», который не меняется, он, похоже, работает нормально. На моей машине, по крайней мере :-).
Я знаю, что вариант 1 - это «правильный» способ проведения модульных тестов, но из трех, это, вероятно, вариант, который я использовал наименее (хотя последние проекты были с IOC, так что дверь открыт для меня). Я понимаю, что многое зависит от того, что именно издевается и что тестируется, но чего я здесь не хватает?
Если контекст помогает, я нахожусь в магазине C#, пишу внутренними приложениями, всего несколько разработчиков.
Техника № 3 (автоматизация выполнения SUT, но проверка результатов вручную) полезна для тестирования вещей, которые не могут быть действительно проверены автоматически, например аспекты внешнего вида пользовательского интерфейса, внешний вид HTML в разных браузерах или обеспечение ваша игра имеет хорошую графику. Однако с базами данных, я думаю, вы потратите меньше времени на тестирование в целом, используя вместо этого первые 2 метода. – apollodude217
Разве это не дура? http://stackoverflow.com/questions/3111645/mock-objects-vs-test-database –