Я согласен с тем, что здесь важно сохранять простоту и позволить ей расти «естественно». Тесты так же важны, как и ваш другой код, и должны быть реорганизованы так же энергично.
Если речь идет о реальных модульных тестах (в отличие от интеграционных тестов, где вы тестируете весь стек от пользовательского интерфейса до базы данных), очень важно сохранить все необходимое для их запуска в своем решении, так что разработчики всегда будут иметь самые новые вещи при обновлении своих исходных файлов. Кроме того, вы должны стремиться к сценарию установки без острых ощущений, где новые разработчики могут просто получить исходные файлы из системы контроля версий и запустить тесты без настройки.
Функция RowTest действительно хороша для простых сценариев, но если вы имеете дело со сложными сценариями, вам следует обратиться к шаблону Test Data Builder , который позволяет определять сценарии по умолчанию, а затем их варианты.
Мне нравится держать мои тестовые данные как можно ближе к тестам, что позволяет мне реально видеть, что происходит в тестах. Поэтому я не думаю, что вопрос заключается в том, следует ли вам использовать XML или базу данных, это просто разные форматы представления данных, но действительно ли вы хотите отделить свои тестовые данные от своих тестов?