Я большой поклонник модульного тестирования, но все еще использую FGDB, чтобы использовать функции для запуска модульных тестов при использовании инфраструктуры ArcObjects.
Кто-нибудь успешно использует насмешки против таких мыслей, как IFeature, IGeometry, IWorkspace и т. Д. Если это так, я хотел бы увидеть некоторые примеры того, как вы это делаете. Меня не очень волнует, какой фальшивый фреймворк вы используете, просто очень хотелось бы посмотреть, как вы это делаете.
Проблема, которую я вижу, заключается в том, что вам приходится разделять и нарезать кубы между таким количеством интерфейсов одного и того же объекта, что затраты на создание репрезентативного фиктивного объекта будут огромными.
arcobjects
development
file-geodatabase
BlinkyBill
источник
источник
Ответы:
В большом проекте нам удалось довольно хорошо изолировать код ArcObjects от нашей бизнес-логики. Я бы сказал, что это, в общем-то, путь, а не пытаться все это высмеивать, даже если это возможно с использованием фальшивых фреймворков.
Спросите себя, почему именно вы чувствуете необходимость издеваться. Как правило, это из-за отсутствующей абстракции. Подумайте о небольших обязанностях и минимизируйте поверхность огромного, уродливого монстра ArcObject. Избегайте перетаскивания типов ArcObject только потому, что где-то нужен какой-то их аспект.
Я могу привести один конкретный пример из нашего проекта. Часть кода, казалось, зависела от IMxDocument. Оказалось, единственная причина была в том, что активный вид нужно было обновить. Поэтому мы создали интерфейс IViewRefresher и работали только над этим; легко издеваться и тестировать. Кроме того, это делает цель коды гораздо более четкой и снимает соблазн для кого - то , чтобы начать делать смешные вещи с IMxDocument , что они не должны были делать , потому что все , что мы хотели сделать здесь было обновление. То же самое упражнение можно выполнить с большим количеством кода ArcObjects.
Кроме того, мы обернули весь доступ к классам пространственных объектов в безопасные оболочки типов, снова предоставляя поддельный код, экранирующий бизнес-код от ArcObjects.
Мы обсуждали даже не использование типов геометрии ArcObjects, но в настоящее время мы разрешаем использовать эти интерфейсы непосредственно в нашем коде. (Тем не менее, только знание интерфейса разрешено, и все экземпляры геометрии используют нашу собственную фабрику геометрии.)
Таким образом, я не разочаровываю насмешки, но я бы посоветовал имитировать на уровне абстракции, отличном от ArcObjects.
источник
Модульное тестирование для разработчиков Esri, выполненное Дейвом Боуманом и Брайаном Нойлом, является неплохой отправной точкой, особенно после того, как они выпустили некоторый код для просмотра.
источник