Вы можете иметь тесты для действий с БД, но, по возможности, старайтесь избегать этого, в противном случае:
- Они будут работать медленнее, чем обычные тесты (скорее всего, это интеграционные тесты)
- Они требуют больше работы по настройке / разборке (дБ / схема / данные таблицы)
- Они вводят внешнюю зависимость от вашей тестовой среды
Это может также быть запахом кода, что ваши классы не отделяют работу, связанную с БД, от другой работы, например, бизнес логика. Однако, возможно, нет, у нас есть каркасный тест, который проверяет, что автоматически сгенерированный сценарий SQL возвращает ожидаемое увеличенное значение идентификатора после вставки новых данных. У AFAIK нет способа проверить, что этот код работает, кроме как выполнить его для БД. Вы можете сделать это или просто предположить, что если SQL совпадает с тем, что вы ожидаете, то это нормально, но мне не нравится это предположение, поскольку на него опирается так много другого кода.
В зависимости от вашей тестовой среды вы должны пометить эти тесты как связанные с [База данных], что позволит вам отделить их от других тестов.