barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

пятница, 24 июня 2011 г.

Шаблон проектирования ObjectMother для написания (модульных) тестов

Вместо:
- тестируемые, а также все остальные необходимые для теста объекты, создаются и инициализируются в коде самого теста (если нет возможности объединить общую фикстуру, инициализируемую в setUp-методе)
- тестируемые, а также все остальные необходимые для теста объекты, создаются и инициализируются в отдельных методах тест-кейса, обращение к которым производится из различных тестов, которым необхоима аналогичная инициализация

Предлагается:
- использование одного или нескольких ObjectMother - классов, которые содержат методы для создания и(или) модификации любых часто используемых в тестовых методах объектов в различных комбинациях. Методы этого класса должны содержать максимально говорящие об их назначении имена, чтобы понятность тестов не снижалась. Объекты, создаваемые ObjectMother, должны иметь возможность легко менять свое состояние, так чтобы после их инициализации в ObjectMother, тесты могли легко поменять его (состояние) на требуемое. Чаще всего ObjectMother создает обычные доменные объекты вместе с требуемыми атрибутами, намного реже - заглушки и мок-объекты, так как последние более специфичны для конкретных тестов и менее - для всего набора модульных тестов приложения.

"+": повышается читабельность кода тестов, уменьшается дублирование инициализирующего кода, упрощается создание новых тестов

Более подробно и с примерами есть тут: http://wiki.agiledev.ru/doku.php?id=tdd:object_mother

Комментариев нет:

Отправить комментарий