У меня есть смысл в моем простом проекте, где я готов к тестированию DAL.Единичное тестирование DAL - пожалуйста, критика
я в основном имеют класс называется FooDataAccess с несколькими очень простыми функциями, позволяет сказать, что 3 из них, как это:
int InsertFoo(string fooName)
void UpdateFoo(int fooID, string fooName)
void InsertFoosDepedency(int fooID, string someValue)
То, что я сделал это - положить 4 SQL сценариев внутри моего тестового проекта блока, последний один как встроенный ресурс.
1) Создать (Unit тест) База данных сценария, 2) Создание объектов сценариев, 3) Вставка таблицы перекодировки значений и 4) Удалить все Но таблицы поиска значения
Идея заключается в том, кто первым использованием проекта должен вручную запускать скрипты 1-3 вручную как одноразовую настройку. Затем выполнить скрипт # 4 при запуске каждого модульного тестирования ... (в небольших приложениях, вы можете даже запустить их все на уровне тестирования)
ОК, до сих пор так хорошо ...
Поэтому у меня есть моя база данных тестовых баз данных, как пустой список. Проверка первой функции InsertFoo(), очевидно, очень проста. Я вызываю функцию, затем просто Assert (ExecuteSQL («select count (*) from foo»)> 1), Assert (ExecuteSQL («select fooName from t_foo») = ожидается)) и т. Д.
Где я «Некоторыми застрявшими являются те, которые требуют зависимостей, таких как 3-я функция в моем примере или даже обновление.
Имеет ли смысл временно отказаться от ограничений внешнего ключа для области моего теста? В противном случае для модульной проверки функции InsertFoosDepedency (int fooID, string someValue) мне пришлось бы сначала выполнить произвольный sql (вручную вставить запись в таблицу FOO и вернуть FooID) ...
OR, должен ли я просто сделать последнее?
Все отзывы очень ценятся.
UPDATE: его работа с встроенным SQL для создания иждивенцев. Думаю, я просто ищу комментарии & критики по этому методу для модульного тестирования DAL. Еще раз спасибо
Я использую Mock Objects уже для всех абонентов на моем DAL. Но я все равно хотел бы еще раз протестировать функции DAL. Я не слишком боюсь завинчивать базу данных, потому что это база данных, созданная специально для модульного тестирования. Возможно, мне нужно просто вызвать функцию InsertFoo() для создания моего foo и получить идентификатор для зависимостей? но это нарушит концепцию того, что это «единичный» тест ??? – dferraro
Я не уверен, что последовал за тобой. Конечно, сначала нужно вставить зависимости, чтобы что-то могло зависеть от них? Вы имеете в виду иждивенцев, а не зависимости? – serialhobbyist
Вы правы, моя вина. Я имел в виду иждивенцев. Еще раз спасибо – dferraro