2008-10-28 3 views
6

Я представил посетителей в качестве одной из основных идей архитектуры в одном из моих приложений. У меня есть несколько посетителей, которые работают на одном и том же материале. Теперь, как я должен его проверить? Некоторые тесты, о которых я думаю, немного больше, чем единичный тест (интеграционный тест?), Но я все еще хочу это сделать. Как бы вы протестировали код, подобный образ C++, из wiki art на Visitor PatternМодульное тестирование Архитектура шаблона посетителей

ответ

1

сделать тестовый объект посетителя и заставить его посетить вещи .... проверить, что он посетил правильные вещи.

+0

Можете ли вы привести простой пример, когда я использую Jsqlparser, который использует шаблон посетителя и хотел бы знать, как их тестировать. – Tony 2017-01-25 13:13:38

+0

, вероятно, вы захотите задать свой собственный вопрос. показать базовый код и то, что у вас возникли проблемы с тестированием. Я больше не использую C++, но кто-то еще, скорее всего, даст вам код, показывающий, как это сделать. – 2017-01-25 21:59:16

2

Вы можете создать mock objects, и ваши посетители посещают их, а затем создадут насмешливых посетителей и проведут проверку правильности действий.

3

Тестирование на модуле не касается тестирования шаблонов, это проверка правильности реализации методов и функций. Шаблон посетителя представляет собой определенную структуру классов, и для каждого из классов (ConcreteVisitor и ConcreteElement, в частности) вам нужны модульные тесты.

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

Если вам нужны макетные объекты или вы можете использовать «реальные» объекты, это другое дело. Это сильно зависит от того, хорошо ли объекты ведут себя достаточно хорошо для целей единичного тестирования (т. Е. Они не тянут много дополнительных зависимостей и т. Д.), И независимо от того, тестируются ли сами объекты (т.е. вам нужно доверять этим объектам 100%). Проблема с ложными или реальными объектами была рассмотрена ранее в стеке, поэтому выполните поиск тегов unittest.

Смежные вопросы