请帮我回答这个问题:我应该为与 iOS 应用程序的本地数据库交互的数据访问编写单元测试,在这种情况下是 SQLite 数据库。如果应该,我该怎么写?使用模拟或使用 db 文件。
问问题
1688 次
2 回答
0
过去,我通过为每个测试用例创建一个新的 SQLite DB 文件来做到这一点。在测试用例中,我将测试我的代码写入数据库并读取与写入数据库完全相同的内容。这样所有的测试数据都在代码中,所以测试用例更清晰。
这种方法牺牲了速度,但我的单元测试仍然运行得很快。
于 2013-09-10T23:12:45.297 回答
0
假设您要测试程序的逻辑而不仅仅是访问 SQLite 的能力,那么测试替身(模拟对象或虚拟对象)将为您提供比单独的 db 文件更容易维护的测试。一个单独的 db 文件必须在正确的行中有正确的数据,如果您在一个测试中修改它,您必须在下一个测试之前重置它。如果您的测试数据不同步,您的测试将开始失败。具有文字测试值的模拟对象永远不会不同步。
使用模拟几乎会迫使您使用依赖注入,因此您可以将其替换为真实的数据对象。使用 db 文件不会强制您使用依赖注入。因此,如果您正在使用大量不遵循 DI 模式的现有代码,则 db 文件将是“简单”的选择,尽管从面向对象的角度来看不是最佳选择。
于 2012-11-30T16:37:38.760 回答