使用dbunit时如何防止数据删除



我将Spring Boot与Liquibase一起使用。

问题是,当数据库中的特定表中已经存在数据时,我尝试在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,以免删除已经存在的数据,而只会补充它?因为在您只需要在已经存在的一个条目

上再添加一个条目时,就有一些测试条件

尝试使用以下:

@DatabaseSetup("/dbunit/books_authors.xml", type = DatabaseOperation.INSERT)

sinse您没有设置任何type,而是使用该字段的默认值,即CLEAN_INSERT

来源:Javadoc

相关内容

  • 没有找到相关文章

最新更新