Junit для тестирования сервиса Spring и слоя DAO - PullRequest
26 голосов
/ 22 декабря 2011

Я работаю над приложением Spring (Spring 3.0) и придерживаюсь многоуровневой архитектуры , т.е. Controller -> Service -> DAO layers.

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

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


РЕДАКТИРОВАТЬ:
Похоже, Mockito - хороший вариант. Любая хорошая ссылка, чтобы использовать его весной.

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

Ответы [ 2 ]

26 голосов
/ 22 декабря 2011

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

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

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

4 голосов
/ 22 декабря 2011

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

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

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.2</version>
    </dependency>
    
  2. Тестовый класс, который вы помещаете в src / test / java:

    @TransactionConfiguration(defaultRollback = true)
    @ContextConfiguration({ "classpath:test-spring-context.xml" })
    @Transactional  
    @RunWith(SpringJUnit4ClassRunner.class)  
    public class SomeTests { 
        // ...
    }
    
  3. Файл контекста для вашей весенней установки, ссылающийся на ваш источник данных DAO, помещенный в src / test / resources. Где-нибудь в вашем test-spring-context.xml:

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

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

Нужно больше деталей? Это решение применимо?

...