В одной из прошлых статей мы реализовали тест для тестирования @RequestMapping аннотаций контроллера. Тест получился легковесный и всем нас устраивал. В процессе тестирования нашли небольшой баг. Он был починен буквально сразу, что меня порадовало. Кроме того я получил очень интересный совет от Rossen Stoyanchev - уделить внимание проекту spring-test-mvc.
Далее предлагаю мой модифицированный тест:
Контекст для теста:
Интересный инструмент в копилку разработчика.
Переписка с автором о pro & cons тут.
Дальше еще про SpringMVC (PropertyEditors vs ConversionServices), наконец таки будет SpringSecurity. Кроме того пишите о чем было бы интересно почитать вам!
Всего всего - ваши me & eugene.
Без Given/When/Then не понятно что тестируется
ReplyDeleteperform get and expect that status is ok
Deleteдостаточно читабельно, не согласен?
согласен. С переносами строк становится читабельнее:
DeletexmlConfigSetup("classpath:mvc-test.xml").build()
.perform(get("/employee/list"))
.andExpect(status().isOk());
Кроме того, наличие вот этого:
ReplyDelete< context:component-scan base-package="ua.com.springbyexample.controller" / >
в тестовом контексте делает сам тест бесполезным
Не согласен. Я поднимаю все контроллеры и тестирую мапинги всех контроллеров сразу.
DeleteА я и не говорю что они не тестируются. Я говорю о том что такой тест бесполезен.
DeleteКакие пакеты сканируются в реальном контескте? Может они там вобще не сканируются, а прописаны в XML конексте руками. Может есть еще пакеты которые нужно просканировать.
Понятно, что скорее всего в реальном контексте точно такая же строчка. Но это, по сути, есть дубликация кода.
Я бы конкретно в этом случае (для тестирования маппингов) включил бы реальный контекст в тестовый.
Почему тест бесполезен ? Или ты Андрей считаешь, что должен подыматься реальный контекст
ReplyDeleteа потому что в реальном контескте возможно сканируется другой пакет.
DeleteЕест будет репортить, что все ОК, а на самом деле маппинг не работает.
Согласен. Скорее всего поменяю либо с включением реального контекста, либо через standalone тест. См. примеры фреймворка
DeleteА почему вы Олег, тыкаете людям на форуме а?
ReplyDeleteЗнаю в реале - могу на ты обратиться.
ReplyDeleteА для чего вот это в контексте:
ReplyDelete< bean name="mockito" class="org.mockito.Mockito" />
Это я хотел фабрику построить. Уже поправил.
Delete