Я использую Spring Boot с жидкой базой.
Проблема в том, что когда в базе данных уже есть данные в определенной таблице, и я пытаюсь добавить дополнительные данные в эту таблицу в тестах DBUnit, тогда DBUnit удаляет все данные и вставляет только свои собственные данные.
Я приведу пример, я уже вставил пять авторов в базу данных. Тест без DBUnit:
@RunWith(SpringRunner.class)
@SpringBootTest
public class AuthorsManagerTest {
@Autowired
private AuthorsManager authorsManager;
@Test
public void getAllAuthors() {
List<Author> authors = authorsManager.getAllAuthors().collect(Collectors.toList());
assertFalse(authors.isEmpty());
assertEquals(5, authors.size()); // 5!
}
}
Другой тест, который я использую DBUnit, чтобы добавить еще один, но все пять удаляются, и вставляются только те авторы, которые находятся в DBUnit:
@RunWith(SpringRunner.class)
@SpringBootTest
@TestExecutionListeners({
TransactionalTestExecutionListener.class,
DependencyInjectionTestExecutionListener.class,
DbUnitTestExecutionListener.class
})
@DatabaseSetup("/dbunit/books_authors.xml") // add dbunit file
public class AuthorsManagerTest {
@Autowired
private AuthorsManager authorsManager;
@Test
public void getAllAuthors() {
List<Author> authors = authorsManager.getAllAuthors().collect(Collectors.toList());
assertFalse(authors.isEmpty());
assertEquals(1, authors.size()); // only one!
}
}
Файл DBUnit:
<dataset>
<Authors id="200" name="My Author" />
</dataset>
Как настроить DBUnit таким образом, чтобы он не удалял уже имеющиеся данные, а только дополнял их?
Потому что существуют условия тестирования, когда нужно добавить еще одну запись к уже существующим