【发布时间】:2015-04-19 02:53:32
【问题描述】:
我正在为将数据导入数据库的脚本编写一些测试。脚本的单元测试看起来或多或少像
doAnImport(fileName, databaseToImportInto)
Result<Record2<String, Integer>> results
= databaseToImportInto.select(aStringField, anIntegerField)
.from(oneTable)
.join(anotherTable).on(someField.eq(someOtherField)
.fetch();
我现在想做的是 Junit 断言之类的
assertEquals(10, results.getSize());
assertTrue(results.contains(new Record2<String, Integer>(expectedString1, expectedInteger1);
...
assertTrue(results.contains(new Record2<String, Integer>(expectedString10, expectedInteger10);
因为我不想在结果中假设任何特定的顺序。我的问题是 Record2 是一个接口,RecordImpl 不是公开可见的。
我可以看到的其他选项(将测试查询变成一个视图并为其生成类,以便有一个 XXXRecord 实现)对我来说并不真正可用 - 这些查询的数量很大并且在不断增长,而我没有想将我的数据库架构与我的测试用例的特性联系起来。
我想我可以创建自己的 RecordImpl 子类,但这似乎需要做很多工作,所以我猜考虑到库其余部分的优雅(如果你还没有尝试过,你真的应该) ,这不是“正确的事情”。
任何帮助将不胜感激。
【问题讨论】: