Первый. Мы не используем ORM. И не будет использовать его в ближайшем будущем. (это не мое решение).
Как сделать тесты интеграции DAL менее хрупкими?
Мы создаем хранимые процедуры для нескольких случаев чтения/записи.
Большинство читающих SP предназначены для заполнения DTO, которые отправляются клиенту.
Каждый метод DAL обычно вызывает одиночный SP. Тест интеграции состоит из запуска скрипта вставки, а затем инициализации ожиданий в соответствии со сценарием, метода вызова, а затем проверки возвращаемого результата. То есть стандартный шаблон AAA.
Однако реорганизация даже небольшой схемы DB обычно ломает около сотни тестов. Подготовьте причину: тогда как DTO обычно нуждается в подмножестве столбцов. Вставка требует их всех. При этом каждый ыскшзе, который затрагивает реорганизованный стол, разбивается.
Я рассматриваю исправление связки сценариев каждый раз после рефакторинга какой-то работы обезьяны. Ищете способы повышения надежности тестов.
DTOS довольно часто состоят из данных из нескольких таблиц. Я также рассматриваю подход наличия одного скрипта для заполнения базы данных и последующего запуска всех прочитанных методов DAL. Последовательность выполнения здесь не имеет значения, поскольку состояние БД не изменяется. К сожалению, есть некоторые проблемы с генерируемыми БД значениями, которые иногда являются частью ожиданий теста. –
Но для этих ситуаций отдельный скрипт ок =) –
Решение по-прежнему может работать, если вы сделаете что-то вроде генератора T4 для каждой DTO вместо каждой таблицы. Идея - это предел мест, где происходят изменения, но иногда это может быть борьба за разделение всего в классах генераторов, но как только все ваши тестовые коды будут очень стабильными – Schwarzie2478