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

FreeOnGoo:

我将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)

因为您没有设置任何值type,所以您正在使用该字段的默认值CLEAN_INSERT

资料来源:JavaDoc

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

DBUnit在删除数据集时抛出NoSuchColumnException

如何防止使用 Firebase 数据库规则删除节点?

删除调试版本时,如何防止Firefox删除扩展程序的数据?

在使用Recyclerview + GSON进行分页时如何防止数据清除

使用 JSOUP java 抓取数据时如何防止死机超时?

使用ExifTool时如何防止恢复元数据?

如何使用Spring dbunit模拟数据库视图?

如何防止CCleaner删除索引数据?

Pandas 数据帧索引在索引数据帧的子集时导致问题。如何删除索引或防止错误发生?

使用--strictNullChecks时如何防止打字稿中的`Required <T>`从类型中删除'undefined'

如何防止在重新启动时自动删除使用GetTempFileName创建的文件

如何在使用 .rstrip() 删除 \r\n 时防止出现空格

如何使用Boto3删除SQS消息时防止连接超时

如何防止Django数据库对新对象使用已删除对象的ID?

使用firebase和react查询时如何删除注销数据?

如何防止使用contenteditable删除内部跨度?

如何在数据库优先实体框架中更新模型时防止DbContext中的代码删除

在使用“数据库/ SQL”时如何防止Go中的SQL注入攻击?

在标题中使用“ /”时,如何防止列不显示在WPF数据网格中?

使用sqlalchemy和sybase时,如何防止pandas数据框在#tmp周围添加双引号?

在Javascript中使用表单提交时如何防止结果和输入数据消失

在不使用IUserType的情况下查询数据库时如何防止NHibernate SqlDateTime溢出?

用户尝试使用 onDataChange 注册时的 Firebase 数据库如何防止发送错误吐司

更新数据和使用动量滚动时,如何防止SlickGrid闪烁?

在Visual Basic 2012中使用相同的主键保存数据时,如何防止错误/错误?

如何在使用 Nuxt 的 fetch() 钩子获取数据时防止模板错误

仅使用动态链接时如何防止 Firebase 数据库停用

运行Terraform destroy时如何防止删除资源组?

Laravel - 存在依赖字段时如何防止删除