2012-07-30

И опять про тестирование SpringMVC: Новая надежда

В одной из прошлых статей мы реализовали тест для тестирования @RequestMapping аннотаций контроллера. Тест получился легковесный и всем нас устраивал. В процессе тестирования нашли небольшой баг. Он был починен буквально сразу, что меня порадовало. Кроме того я получил очень интересный совет от Rossen Stoyanchev - уделить внимание проекту spring-test-mvc.
Далее предлагаю мой модифицированный тест:
Контекст для теста:

Интересный инструмент в копилку разработчика.
Переписка с автором о pro & cons тут.
Дальше еще про SpringMVC (PropertyEditors vs ConversionServices), наконец таки будет SpringSecurity. Кроме того пишите о чем было бы интересно почитать вам!
Всего всего - ваши me & eugene.

13 comments:

  1. Без Given/When/Then не понятно что тестируется

    ReplyDelete
    Replies
    1. perform get and expect that status is ok
      достаточно читабельно, не согласен?

      Delete
    2. согласен. С переносами строк становится читабельнее:

      xmlConfigSetup("classpath:mvc-test.xml").build()
      .perform(get("/employee/list"))
      .andExpect(status().isOk());

      Delete
  2. Кроме того, наличие вот этого:

    < context:component-scan base-package="ua.com.springbyexample.controller" / >

    в тестовом контексте делает сам тест бесполезным

    ReplyDelete
    Replies
    1. Не согласен. Я поднимаю все контроллеры и тестирую мапинги всех контроллеров сразу.

      Delete
    2. А я и не говорю что они не тестируются. Я говорю о том что такой тест бесполезен.

      Какие пакеты сканируются в реальном контескте? Может они там вобще не сканируются, а прописаны в XML конексте руками. Может есть еще пакеты которые нужно просканировать.
      Понятно, что скорее всего в реальном контексте точно такая же строчка. Но это, по сути, есть дубликация кода.

      Я бы конкретно в этом случае (для тестирования маппингов) включил бы реальный контекст в тестовый.

      Delete
  3. Почему тест бесполезен ? Или ты Андрей считаешь, что должен подыматься реальный контекст

    ReplyDelete
    Replies
    1. а потому что в реальном контескте возможно сканируется другой пакет.
      Еест будет репортить, что все ОК, а на самом деле маппинг не работает.

      Delete
    2. Согласен. Скорее всего поменяю либо с включением реального контекста, либо через standalone тест. См. примеры фреймворка

      Delete
  4. А почему вы Олег, тыкаете людям на форуме а?

    ReplyDelete
  5. Знаю в реале - могу на ты обратиться.

    ReplyDelete
  6. А для чего вот это в контексте:

    < bean name="mockito" class="org.mockito.Mockito" />

    ReplyDelete
    Replies
    1. Это я хотел фабрику построить. Уже поправил.

      Delete