Похоже, вы намерены сделать больше интеграционного теста, чем юнит-теста. Это не для точного определения формулировки, но это имеет значение. Под модульным тестированием подразумеваются методы тестирования в изоляции , в среде, называемой прибором, созданной только для одного теста, а затем удаленной. Другой экземпляр прибора будет воссоздан, если в следующем случае потребуется такой же прибор. Это делается для изоляции тестов, чтобы ошибка в одном тесте не влияла на результат последующих тестов.
Обычно один тест состоит из трех этапов:
- Организовать - подготовить прибор: создать экземпляр класса для тестирования, возможно, нужны другие объекты
- Act - вызвать метод для тестирования
- Утверждай - проверяй ожидания
Юнит-тесты, как правило, держатся в стороне от внешних ресурсов, таких как файлы и базы данных. Вместо этого фиктивные объекты используются для удовлетворения зависимостей тестируемого класса.
Однако, в зависимости от типа вашего приложения, вы можете попытаться запустить тесты из самого приложения. Это не «чистое» модульное тестирование, но оно может быть полезным в любом случае, особенно если код не был написан с учетом модульного тестирования, он может быть недостаточно «гибким» для модульного тестирования.
Для этого требуется специальный режим выполнения, например, с параметром "-test", который обычно инициализирует приложение, а затем вызывает тесты, которые будут имитировать входные данные и использовать утверждения для проверки того, что приложение отреагировало так, как ожидалось. Точно так же можно было бы вызвать код завершения работы и проверить с помощью утверждений, было ли закрыто соединение с базой данных (если объекты не удалены).
Этот подход имеет несколько недостатков по сравнению с модульными тестами: он зависит от файлов конфигурации (программное обеспечение может работать по-разному в зависимости от параметров), от базы данных (от ее содержимого и от возможности подключения к ней), тестов не изолированы ... Первые два можно преодолеть с помощью значений по умолчанию для конфигурации и подключения к тестовой базе данных в режиме test .