Итак, ситуация следующая :
У нас есть очень старый продукт, в котором есть десятки решений. Многие из них запускают разные модульные тесты, некоторые MSTest, некоторые NUnit. Есть много тестов, которые тестируют базу данных, а некоторые зависят от данных. Другими словами, они исполняют код, чтобы проверить, есть ли у клиента Andriy заказы на продукты A и B. Я знаю, что это неправильно, но я, как и говорил, этот продукт был разработан многими командами в разное время.
В настоящее время многие команды продолжают вносить изменения в проекты, и изменения адресованы различным веткам. Среды сборки создаются в режиме CI. Таким образом, мы сталкиваемся с проблемой поддержания этих тестов. Мы потратили слишком много времени и усилий на поддержание работоспособности тестов. Поскольку базы данных с тестовыми данными действительно тяжелые, у нас не может быть отдельной базы данных для каждой ветви, но мы можем хранить чистые образцы баз данных (200 МБ) для каждой из ветвей, но в этом случае многие тесты не пройдут.
Я уже думал об этом, и у меня есть какой-то предварительный план, такой как :
1) Избавление от тестов, зависящих от данных, путем их удаления или (если возможно) перезаписи для вставки данных и отката сразу после выполнения теста.
2) Переместить все специфичные для базы данных тесты в отдельные проекты, т. Е. Отделить интеграционные тесты от обычных модульных тестов
3) Создайте образец базы данных для каждой ветви и запустите интеграционные тесты отдельно.
Мне бы очень хотелось услышать от вас, как подобные ситуации разрешались в ваших проектах. Разделяли ли вы интеграционные тесты и были ли у вас когда-либо конкретные тесты? Рекомендуется ли вообще проводить тесты, зависящие от данных? Любые предложения будут оценены.