iOS UnitTests预装了sqlite3 DB

时间:2017-03-03 04:46:56

标签: ios unit-testing command-line sqlite

我需要创建iOS单元测试,我需要将sql .db推送到app location / sandbox / whatever(可能来自testsuit的setUp()func)并从测试用例中运行一些CRUD操作,然后删除测试完成时,来自tearDown()的数据库。我如何将.db推送到app位置进行测试,这将像app中使用的db一样使用。

另一个问题,我需要运行自动化测试,所以有没有任何命令(比如Android中我们使用adb,在Tize中我们使用gdb)用于iOS应用程序在应用程序位置插入这些数据库文件来运行这些测试用例。如果我错过了任何一点,请帮助。

在iOS模拟数据库中测试CRUD操作的标准方法是什么。

1 个答案:

答案 0 :(得分:0)

就我的研究而言,iOS没有类似adb / sdb的工具。此外,还有一种在真实数据库上执行测试的解决方法。

步骤

  1. 将测试数据库保存到App / resource文件夹中。您可以按照these technique从发布版本中跳过此大型测试数据库。
  2. 在App端创建一个函数来替换WithTestDatabase(),它基本上用App / resource / test-database替换你的App数据库。如果需要,您可以临时复制当前的App db。
  3. 如果您想从AppTests(单元测试)访问,您只需调用Aapp / replaceWithTestDatabase,因为iOS测试是在主App下托管的。
  4. 如果你想从AppUITests访问,你需要从setUp()方法发送额外的启动参数,让app知道它应该从app delegates调用replaceWithTestDatabase。 Here是一个很好的解释,我们如何从AppUITests向主App发送参数。
  5. 希望它有所帮助。