Модульное тестирование архитектуры шаблона посетителя

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
0
2 252
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

Можете ли вы привести простой пример, поскольку я использую Jsqlparser, который использует шаблон посетителей и хотел бы знать, как их протестировать.

MSS 25.01.2017 16:13

вы, вероятно, захотите задать свой вопрос. покажите базовый код и то, с чем у вас возникли проблемы с тестированием. Я больше не занимаюсь C++, но кто-то другой, скорее всего, даст вам код, показывающий, как это сделать.

Keith Nicholas 26.01.2017 00:59

Вот ответ на мой вопрос.

MSS 27.01.2017 09:14

Вы можете создать имитировать объекты, и ваши посетители будут посещать их, а затем создать фиктивных посетителей и проверить, были ли выполнены правильные действия.

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

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

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

Другие вопросы по теме