Паттерн Visitor и юнит -тестирование
От: vladpol Украина http://vlad-mislitel.livejournal.com/
Дата: 28.04.14 19:26
Оценка:
В приложении много алгоритмов построенно с помощью Visitor'а, при чем Visit перегружен под конкретные типы. А когда начали писать тесты поняли, что писать моки под конкретные типы не вариант... Я правильно понимаю, что иного пути, кроме как из каждого типа выделить интерфейс и переписать в терминах интерфейса нет?
С уважением, Владислав Полищук
Re: Паттерн Visitor и юнит -тестирование
От: IT Россия linq2db.com
Дата: 28.04.14 21:30
Оценка:
Здравствуйте, vladpol, Вы писали:

V>В приложении много алгоритмов построенно с помощью Visitor'а, при чем Visit перегружен под конкретные типы. А когда начали писать тесты поняли, что писать моки под конкретные типы не вариант... Я правильно понимаю, что иного пути, кроме как из каждого типа выделить интерфейс и переписать в терминах интерфейса нет?


А вариант не писать моки даже не рассматривался?
Если нам не помогут, то мы тоже никого не пощадим.
Re: Паттерн Visitor и юнит -тестирование
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 28.04.14 22:24
Оценка: +2
Здравствуйте, vladpol, Вы писали:

V>В приложении много алгоритмов построенно с помощью Visitor'а, при чем Visit перегружен под конкретные типы. А когда начали писать тесты поняли, что писать моки под конкретные типы не вариант... Я правильно понимаю, что иного пути, кроме как из каждого типа выделить интерфейс и переписать в терминах интерфейса нет?


В случае с визитором один unit это сама древообразная структура + visitor. Нет смысла тестировать отдельные вызовы, есть смысл тестировать результат применения визитора.
Re[2]: Паттерн Visitor и юнит -тестирование
От: vladpol Украина http://vlad-mislitel.livejournal.com/
Дата: 29.04.14 09:02
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Здравствуйте, vladpol, Вы писали:


V>>В приложении много алгоритмов построенно с помощью Visitor'а, при чем Visit перегружен под конкретные типы. А когда начали писать тесты поняли, что писать моки под конкретные типы не вариант... Я правильно понимаю, что иного пути, кроме как из каждого типа выделить интерфейс и переписать в терминах интерфейса нет?


G>В случае с визитором один unit это сама древообразная структура + visitor. Нет смысла тестировать отдельные вызовы, есть смысл тестировать результат применения визитора.


Публичный метод принимает на вход параметр базового типа и пропускает его через визитор, раскладывая по конкретным типам и выполняя ддля каждого некие действия. Получается, что бы оттестировать результат мне нужно создать моки на каждый дочерний тип, а это затруднительно
С уважением, Владислав Полищук
Re[3]: Паттерн Visitor и юнит -тестирование
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 29.04.14 09:38
Оценка:
Здравствуйте, vladpol, Вы писали:

V>Здравствуйте, gandjustas, Вы писали:


G>>Здравствуйте, vladpol, Вы писали:


V>>>В приложении много алгоритмов построенно с помощью Visitor'а, при чем Visit перегружен под конкретные типы. А когда начали писать тесты поняли, что писать моки под конкретные типы не вариант... Я правильно понимаю, что иного пути, кроме как из каждого типа выделить интерфейс и переписать в терминах интерфейса нет?


G>>В случае с визитором один unit это сама древообразная структура + visitor. Нет смысла тестировать отдельные вызовы, есть смысл тестировать результат применения визитора.


V>Публичный метод принимает на вход параметр базового типа и пропускает его через визитор, раскладывая по конкретным типам и выполняя ддля каждого некие действия. Получается, что бы оттестировать результат мне нужно создать моки на каждый дочерний тип, а это затруднительно

А зачем моки?
Re: Паттерн Visitor и юнит -тестирование
От: Ziaw Россия  
Дата: 30.04.14 18:30
Оценка:
Здравствуйте, vladpol, Вы писали:

V>В приложении много алгоритмов построенно с помощью Visitor'а, при чем Visit перегружен под конкретные типы. А когда начали писать тесты поняли, что писать моки под конкретные типы не вариант... Я правильно понимаю, что иного пути, кроме как из каждого типа выделить интерфейс и переписать в терминах интерфейса нет?


Какой смысл в интрефейсах? В качестве аргумента с типом интерфейса все равно придется что-то передавать. Если это будет конкретный тип — передавайте его сейчас, если мок — зачем интерфейсы?

Вы не договорили, почему возникла идея писать моки и почему вы решили, что это не вариант?
Re[3]: Паттерн Visitor и юнит -тестирование
От: Ziaw Россия  
Дата: 30.04.14 18:35
Оценка:
Здравствуйте, vladpol, Вы писали:

V>Публичный метод принимает на вход параметр базового типа и пропускает его через визитор, раскладывая по конкретным типам и выполняя ддля каждого некие действия. Получается, что бы оттестировать результат мне нужно создать моки на каждый дочерний тип, а это затруднительно


Вы хотите тестировать каждое действие? Значит вам надо передать нужный ему тип. Вариантов-то нет, чтобы оттестировать метод надо его выполнить (статический анализатор мы тут не рассматриваем), чтобы выполнить надо вызвать, чтобы вызвать — передать аргумент.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.