Модульное тестирование с фиктивными объектами сериализации в C ++ - PullRequest
1 голос
/ 30 марта 2010

Привет,

Я довольно новичок в TDD и столкнулся с модульным тестом, который я не совсем уверен, как обратиться.

По сути, я тестирую несколько устаревших методов класса, которые читают / записывают двоичный поток в файл. Функции класса принимают сериализуемый объект в качестве параметра, который обрабатывает фактическое чтение / запись в файл.

Для проверки этого я думал, что мне понадобится фиктивный объект сериализации, который я передам этой функции. Моей первоначальной мыслью было удержание фиктивного объекта на (char *), который бы динамически выделял память и запоминал данные. Однако создается впечатление, что фиктивный объект может выполнять слишком много работы и может выходить за рамки данного конкретного теста.

Верен ли мой первоначальный подход, или кто-нибудь может придумать другой способ правильной проверки этого?

Спасибо!

Ответы [ 2 ]

1 голос
/ 30 марта 2010

Я уверен, что с этим будут некоторые разногласия, но я чувствую, что фиктивные объекты - это сложная тема. Я бы освоился с немодным TDD, прежде чем погрузиться в издевательства. Тем не менее, есть много проблем, которые лучше всего решаются с помощью макетов. В этом случае вашему макету на самом деле не нужно ничего делать, просто запишите, что вызывающая функция вызвала их. Проверьте реальный читатель и писатель в отдельных тестах. Ваш инстинкт того, что ваш макет делает слишком много работы, верен.

0 голосов
/ 30 марта 2010

просто используйте std :: ostringstream, чтобы вам не приходилось управлять char *.

Кроме того, поскольку кажется, что вы тестируете клиент сериализуемого объекта, объект фактически не должен сериализоваться. Вы должны убедиться, что правильные функции вызываются с правильными параметрами. Вам вполне может не понадобиться никакой символ * или что-либо подобное.

...