Ищите какие-то практические советы здесь и любой опыт, который люди имели в подобной ситуации.
Мы используем методологию sytle для BDD/TDD для создания нашего программного обеспечения (довольно большое/сложное приложение). Конечным результатом является.. поведенческие спецификации (заданный/когда/тогда стиль), основанный на бизнес-требованиях, модульные тесты, которые отражают эти и код, который отражает требования тестов.
Однако недавно наш тестовый отдел начал выполнять интеграционные тесты, и, по понятным причинам, они хотят использовать наш (уже проходящий) код бизнес-логики, чтобы настроить и снести тестовое состояние (а не напрямую обращаться к базе данных), поскольку они в основном связаны с тестированием через пользовательский интерфейс приложения и не хотят тратить все дневные пререкающиеся базы данных.
Проблема заключается в том, что некоторые из репозиториев Entity не имеют методов удаления, поскольку пока еще не было требований для бизнеса. Многие из них имеют архив /Reinstate/backup и т.д. (И могут иметь отложенные запросы на отставание).
Итак, теперь у нас есть тестовый отдел. требование для удаления (но которое конфликтует с историями бизнес-пользователей)
Итак... Мой вопрос: если я должен добавить методы специально для тестового отдела... что это лучший способ справиться с этим. Я понимаю, что это обычно считается плохой практикой в "TDD Utopia", но реалистично, как вы справлялись с таким конфликтом?
Первые мысли, которые у меня были, - это использование именования...
void TestOnly_Delete(Guid id){}
... атрибуты...
[TestOnly]
void Delete(Guid id){}
... или директивы компилятора...
#if TESTBUILD
void Delete(Guid id){}
#endif
Итак, как минимум, разработчики могут знать, что не следует вызывать методы TestOnly и максимум, методы тестирования не развертываются в производственных сборках.
... или просто обмануть и добавить историю пользователей, чтобы управлять им таким образом; -)
Любой опыт или совет с благодарностью оценили?
Спасибо заранее.