DbUnit 和二进制数据

Posted

技术标签:

【中文标题】DbUnit 和二进制数据【英文标题】:DbUnit and binary data 【发布时间】:2011-01-07 15:37:57 【问题描述】:

我使用 DbUnit 对我的 DAO 对象进行单元测试。到目前为止效果很好。

我有一个问题,我有字段 ob 类型 byte[],它作为 BLOB 存储在数据库中。该列不为空。如何在 DbUnit 使用的 XML 数据集文件中指定此列的值?该值可以没有什么花哨的,5个字节就足够了。我想避免为此创建额外的二进制文件。

有什么建议吗?

【问题讨论】:

【参考方案1】:

毕竟我是这样解决的:

XML 数据集文件:

数据集>

DbUnit 具有对 Base64 编码数据的内置支持,它可以正确转换为字节数组。

测试用例代码:

assertEquals("12345".getBytes(), image.getContent());

【讨论】:

如果您在 XML 数据文件中定义它,这也适用于 NDbUnit:<HashedPassword>MjBxdxxY7NbME2Ha6DKhepVpwio=</HashedPassword> 例如Postgres中的base64编码:select encode('12345', 'base64'); 请注意:在字符串和字节之间进行转换时,反之亦然,例如在此答案中的 assertEquals 方法示例中,始终指定要使用的字符集。我刚刚有一个在我的 IDE 中工作的单元测试(默认为 UTF-8),但在使用 Maven 构建时失败(它使用 windows 默认编码,导致字符串不匹配)

以上是关于DbUnit 和二进制数据的主要内容,如果未能解决你的问题,请参考以下文章

DBUnit数据库测试

DBUnit数据库测试

JUnit + DbUnit:在开发和测试环境之间切换数据库连接

转:使用DBUnit测试时违反外键约束的解决办法

如何使用 dbUnit 将数据库恢复到初始状态?

DBUnit 在每个方法之后都没有清理和插入数据库,所以测试不是独立的