Я представил посетителей как одну из основных архитектурных идей в одном из моих приложений. У меня есть несколько посетителей, которые занимаются одним и тем же. Как мне это проверить? Некоторые тесты, о которых я думаю, немного больше, чем должен быть модульный тест (интеграционный тест? Что угодно), но я все равно хочу это сделать. Как бы вы протестировали код, подобный образцу C++ из вики-арта на Шаблон посетителя





сделайте объект тестового посетителя и заставьте его посещать объекты .... проверьте, что он посещал нужные объекты.
вы, вероятно, захотите задать свой вопрос. покажите базовый код и то, с чем у вас возникли проблемы с тестированием. Я больше не занимаюсь C++, но кто-то другой, скорее всего, даст вам код, показывающий, как это сделать.
Вот ответ на мой вопрос.
Вы можете создать имитировать объекты, и ваши посетители будут посещать их, а затем создать фиктивных посетителей и проверить, были ли выполнены правильные действия.
Модульное тестирование - это не совсем шаблоны тестирования, это проверка правильной реализации методов и функций. Шаблон посетителя - это особая структура класса, и для каждого из задействованных классов (в частности, ConcreteVisitor и ConcreteElement) вам потребуются модульные тесты.
Когда вы почувствуете уверенность в том, что методы вашего класса работают нормально, вы также можете использовать свою инфраструктуру модульного тестирования для разработки интеграционных тестов. Не начинайте интеграционное тестирование сразу: вы обнаружите, что разрабатываете множество интеграционных тестов, которые фактически тестируют поведение определенного класса, то есть модульные тесты.
Нужны ли вам фиктивные объекты или вы можете использовать «настоящие» объекты - другой вопрос. Это во многом зависит от того, достаточно ли хорошо объекты ведут себя для целей модульного тестирования (т.е. они не задействуют множество дополнительных зависимостей и т. д.), И от того, проходят ли сами объекты модульное тестирование (т.е. вам нужно доверять этим объектам. 100%). Проблема фиктивных и реальных объектов уже решалась в stackflow раньше, поэтому ищите теги unittest.
Можете ли вы привести простой пример, поскольку я использую Jsqlparser, который использует шаблон посетителей и хотел бы знать, как их протестировать.