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