много идеологических вопросов, что именно и зачем тестируете.
несколько уровней тестирования, обычно при ТДД разработке требуется быстрая обратная связь с тестами, и тестируют исключительно ту функциональность которую разрабатывают, без тестирование зависимостей в виде баз данных и тд, для этого используют разного рода заглушки (в виде мокапа).
тоесть базу данных вообще не используют.
В конце разработки, все равно прогоняются "интеграционные" тесты, по всему сервису, чтоб посмотреть работу сервиса в целом, включая все его части, тогда используется максимально идентичное окружение, что и как на продакшене, по возможности даже используя примерно такую-же БД что и на продакшене. База данных в памяти уже не соответствует этому требованию, может случится так, что например разница в задержках между тем как отрабатывало в памяти и как отрабатывает в реальности будет сильно отличатся, и приведет к неожиданному поведению.
ну и да на каждый такой интеграционный тест базу заново перезаписывают и заполняют темеже самыми данными что и ранее (мы же обычно в тестах проверяем соответствие исходным данным, потом проверяем например изменение этих данных, поэтому без отката этих данных назад, повторить теже самые тесты не получится)