Обычно вы указываете строки, которые вы хотите, чтобы DBUnit вставлял, написав простой XML-документ, например:
|
1
2
3
4
5
|
<?xml version="1.0" encoding="UTF-8"?><dataset> <Person id="0" title="Mr" firstName="Dave" lastName="Smith"/> <Person id="1" title="Mrs" firstName="Jane" lastName="Doe"/></dataset> |
Вы также можете использовать XML-файлы того же формата, чтобы утверждать, что база данных содержит определенные строки.
DBUnit особенно хорошо работает с базами данных в памяти, и если вы работаете с Spring, настроить их довольно просто. Вот хорошая статья, описывающая, как начать.
Работать напрямую с DBUnit — это хорошо, но через некоторое время может стать очевидным, сколько ваших тестов следуют той же схеме настройки базы данных, а затем проверяют результат. Чтобы сократить это дублирование, вы можете использовать проект spring-test-dbunit . Этот проект размещен на GitHub и предоставляет новый набор аннотаций, которые можно добавить в ваши методы тестирования. Версия 1.0.0 была только что выпущена и теперь доступна в центральном репозитории maven:
|
1
2
3
4
5
6
|
<dependency> <groupId>com.github.springtestdbunit</groupId> <artifactId>spring-test-dbunit</artifactId> <version>1.0.0</version> <scope>test</scope></dependency> |
После установки в ваших тестах доступны три новые аннотации: @DatabaseSetup , @DatabaseTearDown и @ExpectedDatabase . Все три могут быть использованы в классе тестирования или отдельных методах тестирования.
Аннотации @DatabaseSetup и @DatabaseTearDown используются для приведения вашей базы данных в согласованное состояние, либо до запуска теста, либо после его завершения. Вы указываете набор данных для использования в качестве значения аннотации, например:
|
1
2
3
4
5
|
@Test@DatabaseSetup("sampleData.xml")public void testFind() throws Exception { // test code} |
Аннотация @ExpectedDatabase используется для проверки состояния базы данных после завершения теста. Как и в предыдущих аннотациях, вы должны указать набор данных для использования.
|
1
2
3
4
5
6
|
@Test@DatabaseSetup("sampleData.xml")@ExpectedDatabase("expectedData.xml")public void testRemove() throws Exception { // test code} |
Вы можете использовать @ExpectedDatabase в нескольких различных режимах в зависимости от того, насколько строгой должна быть проверка (подробности см. В JavaDocs ).
Для обработки аннотаций необходимо убедиться, что в вашем тесте используется DbUnitTestExecutionListener. Смотрите readme проекта для более подробной информации. Если вы хотите узнать больше, здесь есть пример проекта на GitHub и несколько простых инструкций.
Справка: тестирование базы данных с использованием DBUnit, Spring и аннотаций от нашего партнера по JCG Филиппа Уэбба в блоге Фила Вебба .