Я прочитал несколько потоков на SO о полезности модульного тестирования различных приложений. Мнения могут варьироваться от «все время проверять» до «единичных тестов бесполезно» и все между ними («тест, где это имеет смысл»). Я склоняюсь к среднему.Единичное тестирование стороннего ORM
Это приводит меня к моему вопросу. Я пытаюсь решить, будет ли это полезно или практично, чтобы иметь некоторый базовый юнят-тесты тестирования 3 участника ОРМ, как предложено в этом SO сообщении: link text
некоторые базовые тесты могут быть полезны в качестве страховки от будущих отличий , в зависимости от того, как вы используете инструмент. Например, вместо того, чтобы издеваться над всей цепочкой n-уровня (я не поклонник насмешек, когда это не обязательно), просто используйте инструмент ORM для создания, чтения, обновления и удаления типичного объекта/записи и проверьте операцию, используя прямые SQL-запросы в базе данных (test). Таким образом, если сторонний поставщик позже обновит что-то, что нарушит базовую функциональность, о которой вы узнаете, а новые разработчики в вашем проекте могут легко увидеть, как использовать инструмент ORM из примеров тестов модулей.
Мои главные оговорки, следующие за этим советом, состоят в том, что для этого потребуется слишком много настроек, будет головная боль для поддержания, и над всем это не будет практичным в нашей среде. Вот резюме некоторых вопросов для рассмотрения:
- ORM так как мы используем требуется статический объект источника данных (ы), который будет создан и зарегистрировано с доступом к данным и уровнем, связанный с проверкой подлинности пользователя. Для этого потребуется много тестовых настроек и, вероятно, будет проблематично на сервере сборки, где ни один пользователь не войдет в систему.
- Производитель ORM имеет довольно хорошую репутацию по выпуску новых обновлений и не нарушает основные функции. Кроме того, всякий раз, когда пришло время обновлять ORM до последней версии, я бы предположил, что приложение не пойдет прямо на производство, но в любом случае будет полностью регрессионным.
- Поддержание тестирования db для модульного тестирования является проблематичным в этой среде. Test db получает уничтожение после каждого основного выпуска и заменяется резервным копированием db из этапа с запутанными сенсационными данными. Я бы предположил, что для тестирования модулей ORM для тестирования нам потребуется запустить некоторые скрипты/код, которые бы установили базу данных в «тестовом» состоянии. Снова слишком много настроек и обслуживания.
- И, наконец, документация ORM/помощь для новых разработчиков. Я вижу, как что-то подобное может быть полезно. Но поставщик ORM обеспечивает довольно хорошую документацию/помощь с демонстрационными приложениями. Поэтому писать блок-тесты поверх этого, похоже, не стоит никаких усилий.
Итак, стоит ли преодолеть все эти проблемы, чтобы убедиться, что ORM делает то, что он должен делать (это CRUD)? Разве это не обязанность поставщика?