2011-12-22 7 views
26

Я работаю над весенним приложением (весна 3.0) и после многоуровневая архитектура i.e. Controller -> Service -> DAO layers.Junit для тестирования Spring service и DAO layer

Я хочу написать блок-тесты для обслуживания и слоя DAO с использованием Junit.
Я проверил официальный сайт Spring, а также попробовал множество других сайтов, но не смог найти простой и простой способ сделать это.

Может ли кто-нибудь предоставить мне некоторые полезные ресурсы?


EDIT:
Похоже Mockito это хороший вариант. Любая хорошая ссылка, чтобы использовать его весной.

Спасибо, Алекс за предложение.

+0

ОСТОРОЖНО. Ссылка «Mocking service layer» теперь ведет к вредоносной странице. – Cenobyte321

+0

@ Cenobyte321 Спасибо, ссылка удалена. – xyz

+0

Если вы используете спящий режим и весеннюю загрузку, почему бы не сконфигурировать базу данных H2 в памяти, инициализированную при запуске теста? Затем используйте Annotation SpringBootTest AutoConfigureTestEntityManager Transactional на вашем тестовом классе и просто Autowired your dao, и вы можете действительно протестировать его без макета.Лучше вы можете использовать MockMvc и протестировать весь веб-сервис от контроллера (и поэтому я предполагаю, что вы используете контроллер, который использует dao) – amdev

ответ

25

С точки зрения ресурсов весенняя документация по тестированию очень хороша. Это можно найти here.

Когда вы тестируете свой сервисный уровень, вы захотите использовать насмешливую библиотеку, такую ​​как Mockito, чтобы высмеять ваши DAO и, следовательно, ваш уровень домена. Это гарантирует, что они являются истинными модульными тестами.

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

+0

Спасибо. Я не знал о Мокито. Попробуем и обновим вас. – xyz

+0

Я нашел Mockito очень мощным и простым в использовании. Все мои тесты сервисных модулей используют его. –

+0

Просто увидел, попробовал и понравился. Спасибо чувак. Любая хорошая ссылка для использования тестирования Mockito для весны? – xyz

4

Не знаю много о ресурсах, но это не так трудно сделать, если у вас есть дао + пружинный установка красиво. Вам понадобятся следующие данные:

  1. JUNIT зависимые вещи. с Maven, что-то вроде этого:

    <dependency> 
        <groupId>junit</groupId> 
        <artifactId>junit</artifactId> 
        <version>4.8.2</version> 
    </dependency> 
    
  2. Тест класса, который вы размещаете внутри SRC/тест/Java:

    @TransactionConfiguration(defaultRollback = true) 
    @ContextConfiguration({ "classpath:test-spring-context.xml" }) 
    @Transactional 
    @RunWith(SpringJUnit4ClassRunner.class) 
    public class SomeTests { 
        // ... 
    } 
    
  3. Контекст файл для установки пружинной вашего DAO DataSource находится внутри SRC/тест/ресурсы. Где-то в вашей тест-весна-context.xml:

    <import resource="datasource-test.xml" /> 
    

Теперь, например, в затмении вы можете запустить проект в качестве теста JUnit.

Нужна более подробная информация? Является ли это решение применимым?

+0

Спасибо. Как проверить уровень сервиса? – xyz

+0

Не знаете, какая именно услуга для вас, но я предполагаю, что она должна содержать логику приложения, вызывая методы CRUD на DAO, когда контроллер сообщает об этом? Если это так, нет никакой разницы. Вы просто вводите класс обслуживания в вышеуказанную настройку, вызываете методы, сравниваете результаты, а потом все откатываются назад. – Pete

+0

Да. По сервису я имею в виду класс, который вызывает методы DAO. – xyz

Смежные вопросы