Широко используется издевательство над предметами? - PullRequest
6 голосов
/ 17 сентября 2008

Мне любопытно, сколько из вас, ребята, включают в ваш ежедневный процесс разработки макеты объектов (фреймворки, такие как JMock, NMock, RhinoMocks рука об руку с фреймворками для модульного тестирования). Каковы ваши переживания?

Видите ли, я разрабатываю поверх платформы ГИС (географических информационных систем), в которой большая часть работы связана с каким-либо способом обработки данных. Поскольку его объектная модель данных довольно сложна (многие классы и интерфейсы, все на основе COM), также довольно сложно и громоздко издеваться. В этом случае при написании тестовых наборов макетирование накладывает большие затраты. Интересно, есть ли люди в подобной ситуации или просто как насмешка (в какой бы ситуации вы ни находились) работает для вас.

Ответы [ 6 ]

5 голосов
/ 17 сентября 2008

В недавнем проекте, над которым я работал, мы широко использовали фиктивные объекты в нашем модульном тестировании. Проект был на 100% Java и среднего размера (около 100 000 строк без комментариев). Это было настольное приложение на основе Swing - и единственный эффективный способ, который мы нашли для тестирования логики пользовательского интерфейса, был через вариантный вариант MVC, который позволял нам использовать фиктивные объекты вместо реальных классов пользовательского интерфейса Swing для автоматизированного тестирования. Мы также широко использовали mocking при тестировании уровня доступа к данным (Hibernate / DAO).

При использовании пользовательского интерфейса макеты было легко и просто построить. А в дизайн приложения (Fowler Passive View) легко вписываются издевательства. Это не относится к макетам, используемым при тестировании уровня доступа к данным. Но я могу сказать, что это явно стоило усилий. На самом деле, большая часть «усилий» действительно была направлена ​​на создание многоразового решения, которое сводило к минимуму работу, которую разработчик должен был сделать для создания каждого отдельного макета. Я бы порекомендовал потратить время на то, чтобы разобраться и найти подход для вашей ситуации, который позволяет легко смоделировать слой данных ГИС. Это - или просто вручную макетировать каждый класс. В любом случае, возможность запуска автоматических модульных тестов, основанных на макетах, имеет смысл ...

2 голосов
/ 17 сентября 2008

В моей ситуации макеты работают очень хорошо. Но я использую Python, который настолько динамичен, что делает многие вещи, связанные с тестированием, намного, намного проще.

В ситуации, подобной вашей, когда приложение в основном управляется данными (насколько я вижу), макеты могут быть не такими полезными. Достаточно просто передать данные и посмотреть, как они появятся, для тестирования. Я просто хотел бы убедиться, что приложение достаточно модульно , поэтому этот подход может быть применен к достаточно маленьким компонентам.

1 голос
/ 04 ноября 2008

Дейв Буман (Dave Bouman) выступил с инициативой попытаться создать библиотеку сообщества Mocks для использования в модульном тестировании, связанном с ArcObjects. Его блог и этот svn-репозиторий содержат отличную информацию, касающуюся модульного тестирования ГИС-систем

http://blog.davebouwman.net/CategoryView,category,Unit%2BTesting.aspx

http://svn2.assembla.com/svn/arcdeveloper/TestingUtilities/trunk/

1 голос
/ 17 сентября 2008

В моем случае очень широко используется издевательство. Обычно макеты предназначены для классов, которые имеют внешние зависимости, например, сеть, база данных, файловая система. Любое из них может привести к ошибкам в тестах, если макеты не используются.

Если макеты, которые вы считаете дорогостоящими для написания из-за большого количества ложных данных для заполнения, вы можете установить некоторые предварительно заполненные объекты данных как константы и использовать их или слегка измененные копии в своем тесте. Если такие объекты данных имеют внешние зависимости, то, возможно, реорганизуйте их таким образом, чтобы можно было разделить две проблемы.

1 голос
/ 17 сентября 2008

Пытаясь протестировать Sharepoint, кажется, что издеваться - это единственный способ, и только typemock позволит вам высмеивать запечатанные классы.

1 голос
/ 17 сентября 2008

Насмешка может быть полезна в каком-то проекте. Но иногда издевательства очень трудоемки, а рентабельность инвестиций низкая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...