Обычно вы указываете строки, которые вы хотите, чтобы 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 Филиппа Уэбба в блоге Фила Вебба .