红移集成测试(或其他SQL DB)。使用Java中的CSV文件验证表内容

红移集成测试(或其他SQL DB)。使用Java中的CSV文件验证表内容,java,tdd,integration-testing,amazon-redshift,dbunit,Java,Tdd,Integration Testing,Amazon Redshift,Dbunit,我想创建一个集成测试,在不知道表结构的情况下检查任何DB表内容。在某种测试框架中,我将一组名为table_to_test.CSV的CSV文件放入测试中,测试会选择这些文件并断言与DB内容相等 通过文档记录,可以使用 虽然这正是我所需要的,但这个解决方案似乎没有文档记录,缺乏灵活性,因此可能不可靠。我也不能很快找到DBUnitBug tracker 我想知道是否有其他解决办法。CSV到CSV的比较框架也可以工作,因为在Redshift上我可以将数据从表中卸载到CSV文件。最终我能够使用DB单元。如

我想创建一个集成测试,在不知道表结构的情况下检查任何DB表内容。在某种测试框架中,我将一组名为
table_to_test.CSV
的CSV文件放入测试中,测试会选择这些文件并断言与DB内容相等

通过文档记录,可以使用

虽然这正是我所需要的,但这个解决方案似乎没有文档记录,缺乏灵活性,因此可能不可靠。我也不能很快找到DBUnitBug tracker


我想知道是否有其他解决办法。CSV到CSV的比较框架也可以工作,因为在Redshift上我可以将数据从表中卸载到CSV文件。

最终我能够使用DB单元。如果您使用的是Spring,则可以通过这种方式设置DB连接(@beforeach是from)

对于断言,您需要原始问题中的代码。您还需要指定要在
table ordering.txt
中测试的所有表名(
resource
实例应指向此文件)。文件必须放在所有CSV文件所在的同一目录中。
table ordering.txt的示例:

my_table_1
my_table_2
my_table_3
包含预期数据的CSV文件必须分别具有名称
my_table_1.CSV
my_table_2.CSV
my_table_3.CSV
。如果需要断言
null
值,则必须在CSV中明确指定“null”一词。还要注意CSV中的数据。就我而言,我在标题中多了一个空白符号。在文本编辑器中,它是不可见的,但是测试失败了,并且调试非常困难


CSV转义符号是“\”。

最终我能够使用DB单元。如果您使用的是Spring,则可以通过这种方式设置DB连接(@beforeach是from)

对于断言,您需要原始问题中的代码。您还需要指定要在
table ordering.txt
中测试的所有表名(
resource
实例应指向此文件)。文件必须放在所有CSV文件所在的同一目录中。
table ordering.txt的示例:

my_table_1
my_table_2
my_table_3
包含预期数据的CSV文件必须分别具有名称
my_table_1.CSV
my_table_2.CSV
my_table_3.CSV
。如果需要断言
null
值,则必须在CSV中明确指定“null”一词。还要注意CSV中的数据。就我而言,我在标题中多了一个空白符号。在文本编辑器中,它是不可见的,但是测试失败了,并且调试非常困难


CSV转义符号为“\”。

您应该解释“出现意外错误”,包括在dbUnit站点上打开错误报告。还要解释什么是“未记录”以及您要查找的文档。未记录的部分是如何使用CSV数据集。例如,我无法找到我需要的
table ordering.txt
文件。至于bug——例如,有时CSV解析器会进入无限循环。我无法轻松找到dbunit bug tracker,因此没有bug报告。然而,我需要说的是,最终我能够使用带有CSV数据集的dbUnit设置断言。我将作为答案发布。感谢您的解释。dbUnit bug或feature request trackers:您介意将您的CSV使用信息捕获为文档的补丁/合并请求吗?您是否能够为失败原因创建一个或多个测试,以便为每个人修复?您应该解释“出现意外错误”,包括在dbUnit站点上打开错误报告。还要解释什么是“未记录”以及您要查找的文档。未记录的部分是如何使用CSV数据集。例如,我无法找到我需要的
table ordering.txt
文件。至于bug——例如,有时CSV解析器会进入无限循环。我无法轻松找到dbunit bug tracker,因此没有bug报告。然而,我需要说的是,最终我能够使用带有CSV数据集的dbUnit设置断言。我将作为答案发布。感谢您的解释。dbUnit bug或feature request trackers:您介意将您的CSV使用信息捕获为文档的补丁/合并请求吗?您是否能够为失败原因创建一个或多个测试,以便对每个人进行修复?
my_table_1
my_table_2
my_table_3