Комплексные тесты - зависимость от одних и тех же тестовых данных - PullRequest
2 голосов
/ 28 февраля 2012

Я разрабатываю собственный сериализатор как хобби-проект, и я хотел бы изучить TDD на нем.

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

Мне нужно проверить «строящий» и «извлекающий» граф сериализации и мне нужно проверить сериализацию и десериализацию созданного графа. Я хотел бы протестировать все четыре действия с несколькими графами (от простых до сложных до суперсложных графов).

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

Я задаю этот вопрос, потому что вижу возможную проблему с зависимостью нескольких тестов на одном классе (поставщик графиков).

Спасибо.

1 Ответ

2 голосов
/ 28 февраля 2012

Здесь не обязательно «правильный» ответ; это зависит от вашего проекта и ваших тестов. представляется хорошей идеей иметь общий источник графов - не обязательно один класс, но, возможно, набор классов (например, фабрику графов / репозиторий), которые могут генерировать графы, представляющие различные концепции (класс отсутствие конструктора без параметров, циклические ссылки и т. д.).

Это не исключает риск того, что несколько тестов будут опираться на общий источник, но вам необходимо взвесить это по сравнению со стоимостью определения построения каждого графика. Вы можете получить много дублированного кода в разных тестах. Если есть смысл повторно использовать данное определение графа; фабрика графиков может стать способом продвижения вперед.

Одной из идей может быть создание мета-теста / набора мета-тестов для каждого графа, чтобы вы могли подтвердить достоверность графа. Дело в том, что если набор реальных тестов, которые все используют один и тот же график, вдруг терпит неудачу, вы сначала смотрите на мета-тесты и убедитесь, что они проходят. Каждый из тестов, которые вы планируете, должен фокусироваться на одном аспекте (сборка / извлечение и т. Д.), И тогда эти тесты могут основываться на достоверности графика.

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

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