在我们开始之前,我知道很少有人认为命中数据库的测试不是“单元测试”。也许“集成测试”会是一个更好的名字。无论哪种方式,开发人员都会对数据库进行测试。
为了启用单元测试,我有一个开发人员本地数据库,我在每次测试开始时使用dbUnit 清除并填充一组已知的数据。这一切都很好,直到测试使用的表以某种方式发生变化,我必须手动更新所有 XML 数据集。这是一种痛苦。我认为其他人一定遇到了同样的问题,并希望找到一个很好的解决方案。那么对于需要填充数据库的测试,您使用什么以及如何处理表定义的更改?(虽然我使用 Java,但我对使用不同技术的解决方案持开放态度。)
编辑: 澄清一点。我有一个人为的测试,例如:
void testLoadRevision() {
database.clear(); // Clears every table dbUnit knows about.
database.load("load/trevision.xml", "load/tissue.xml");
SomeDatabaseThingie subject = new SomeDatabaseThingie(databaseProvider);
Revision actual = subject.load();
assert(actual, expected);
}
在那我有两个表 - tRevision 和 tIssue。加载的修订版使用来自 tIssue 的少量数据。后来 tIssue 获得了一个修订版不关心的新字段。由于新字段为“非空”并且没有合理的默认值,因此该测试将失败,因为 tIssue.xml 将无效。
通过像这样的小改动,编辑 tIssue 并不难。但是,当 XML 文件的数量随着每个流程开始激增时,它就变成了大量的工作。
干杯,
mlk