|
Посоветуйте книги по Мокам (Mock). И что думаете насчет NINJECT в этом плане ?
|
|||
---|---|---|---|
#18+
Привет По юнит-тестингу книги есть. А вот по мокам не нашел. Еще вопросы: 1 И что скажет по поводу ninject ? Порылся, вроде выходит, что очень наворочен, чуть ли не лучше всех. Что скажете ? 2 В стандартной поставке VS2012 есть что-то для создани моков ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 20:40 |
|
Посоветуйте книги по Мокам (Mock). И что думаете насчет NINJECT в этом плане ?
|
|||
---|---|---|---|
#18+
Воланчик, Тема про mock'и на самом деле слишком мала, чтобы потянуть на книжку. Старина Фаулер подытожил тему в одной статье . С тех пор идеалогически ничего не изменилось. Для .Net самый популярный был пожалуй moq, но сейчас бы я посоветовал NSubstitute. 1. Ninject вы как mock собираетесь использовать? Это же DI-container. 2. Не приходилось слышать. PS. Сам отказался от моков полностью. Тесты можно отлично писать и без них. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 21:27 |
|
Посоветуйте книги по Мокам (Mock). И что думаете насчет NINJECT в этом плане ?
|
|||
---|---|---|---|
#18+
SolYUtorВоланчик, Тема про mock'и на самом деле слишком мала, чтобы потянуть на книжку. Старина Фаулер подытожил тему в одной статье . С тех пор идеалогически ничего не изменилось. Для .Net самый популярный был пожалуй moq, но сейчас бы я посоветовал NSubstitute. 1. Ninject вы как mock собираетесь использовать? Это же DI-container. 2. Не приходилось слышать. PS. Сам отказался от моков полностью. Тесты можно отлично писать и без них. Вы имеете ввиду, что каждый раз придется писать свой класс для реализации тестируемого интерфейса ? Вот как раз поэтому то я и хочу прийти к мокам - слишком уж муторно с классами. Там же еще придется каждый раз методы переписывать. Чтобы он для одного теста вернул True, а для другого False - и как тут быть ? Если только создавать отдельный параметр в методе, и тесты будут туда передавать 1,2,3 и получать нужные ответы - но этот параметр же совершенно лишний в реальном приложении будет. Что вы подразумеваете под "Тесты можно отлично писать и без них" ? Как оттестировать интерфейс, когда один и тот же метод, в разных тестах должен работать совершенно по разному ? Если только у Вас там несвой собственный велосипед. Ninject разве не умеет Моки создавать ? Ну я видимо плохо ковырялся пока искал информацию. Мне показалось, что видел где-то, что он и это умеет, либо он входит в какой-то фреймворк... в общем ладно, фиг с ним. PS. Если на то пошло, то какой DI посоветуете ? :) Хотя сам даже не знаю по каким критериям их нужно оценивать... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 21:55 |
|
Посоветуйте книги по Мокам (Mock). И что думаете насчет NINJECT в этом плане ?
|
|||
---|---|---|---|
#18+
ВоланчикВы имеете ввиду, что каждый раз придется писать свой класс для реализации тестируемого интерфейса ? Вот как раз поэтому то я и хочу прийти к мокам - слишком уж муторно с классами. Там же еще придется каждый раз методы переписывать. Чтобы он для одного теста вернул True, а для другого False - и как тут быть ? Если только создавать отдельный параметр в методе, и тесты будут туда передавать 1,2,3 и получать нужные ответы - но этот параметр же совершенно лишний в реальном приложении будет. Я тестирую с реальными объектами, можно скзать интеграционное тестирование. Получается быстрее и проще, хотя требует перестройки подходов к проектированию. Своё отношение к mock'ам подробнее излагал тут , тут , и тут . Есть такое понятие, как Automock. Это когда скрещивают DI-контейнер и Mock-библиотеку. Т.е. Контейнер по первому требованию создаёт Mock объект и подсовывает его в другой объект. Возможно, такой плагин был написан и для Ninject'а. Контейнер нужно выбирать по принципу что больше нравится, и с чем проще работать. Из DI контейнеров (пробовал Spring, Castle Windsor, Autofac) больше всего нравится Windsor. Много точек расширения, и то API которое мне нравится. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 22:19 |
|
Посоветуйте книги по Мокам (Mock). И что думаете насчет NINJECT в этом плане ?
|
|||
---|---|---|---|
#18+
SolYUtor, Хм. Т.е. если реальный класс работает с БД и что-то там меняет, вы его и тестируете с реальным доступом к БД ? Сдается мне, что продумывание алгоритма "как оттестить вставки в таблицы, а потом откатились все что понавставлялось от триггеров, после теста, и ниче не сломалось" будет посложнее чем банальный мок :) Хотя можно конечно потестить на тестовой БД, но и там же придется перед каждый запуском каждого теста готовить нужные данные - как я писал выше, чтобы на один тест выдалось False а на другой True - если, к примеру, идет обращение к очень сложному запросу, не понятно сколько все это будет выполнятся по времени - а таких тестов может нужно штук 10... Мдя. В принципе я то вообще в этом плане еще хуже, так, что не мне судить :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 22:41 |
|
|
start [/forum/topic.php?fid=20&msg=38150337&tid=1405175]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
57ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 317ms |
total: | 469ms |
0 / 0 |