Кажется, что вы намерены сделать, это более интеграционный тест, чем блок-тест. Это не должно указывать на формулировку, но это имеет значение. Единичное тестирование означает методы тестирования в изоляции, в среде, называемой приспособлением, созданной только для одного теста, затем удаляется. Другой экземпляр прибора будет воссоздан, если в следующем случае требуется такое же приспособление. Это делается для изоляции тестов, чтобы ошибка в одном тесте не влияла на результат последующих тестов.
Обычно один тест состоит из трех этапов:
- Расположить - подготовить прибор: экземпляр класса для тестирования, возможно, другие объекты, необходимые
- Act - вызвать метод для тестирования
- Assert - проверить ожидания
Единичные тесты обычно остаются вне внешних ресурсов, таких как файлы и базы данных. Вместо этого mock objects используются для удовлетворения зависимостей проверяемого класса.
Однако, в зависимости от типа приложения, вы можете попробовать запустить тесты из самого приложения. Это не «чистое» модульное тестирование, но может быть ценным в любом случае, особенно если код не был написан с учетом модульного тестирования, он может быть недостаточно «гибким», чтобы его можно было тестировать на единицу.
Для этого требуется специальный режим выполнения с параметром «-test», который будет инициализировать приложение в обычном режиме, а затем вызовет тесты, которые будут имитировать входы и использовать утверждения для проверки реакции приложения как ожидалось. Аналогичным образом, можно было бы вызвать код выключения и проверить с помощью утверждений, если соединение с базой данных будет закрыто (если объекты не удалены).
Этот подход имеет несколько недостатков по сравнению с блок-тестами: он зависит от конфигурационных файлов (программное обеспечение может вести себя по-разному в зависимости от параметров), от базы данных (по ее содержанию и от возможности подключения к ней), тесты не изолированы ... Два первых можно преодолеть с использованием значений по умолчанию для конфигурации и подключения к тестовой базе данных в режиме test.