我需要在每次测试后返回'清理'db状态,恢复测试执行期间所做更改的最简单方法是什么?
答案 0 :(得分:0)
使用DELETE FROM <tablename>; VACCUUM;
或删除表格并重新创建。如果需要重置AUTOINCREMENT列使用的序列值,请使用后面的。
答案 1 :(得分:0)
This question有一些答案可能会引导您朝着正确的方向前进。使用事务来处理回滚对我来说是最容易想到的。
答案 2 :(得分:0)
最简单的方法是创建一个模拟数据库只有一些测试数据,在测试后只需删除它。
答案 3 :(得分:0)
最新的Note Pad示例应用程序执行类似的操作。它包括Note Pad使用的内容提供程序的单元测试。由于这些测试基于JUnit 3,因此 为每个单元测试调用setUp()和tearDown()方法。
测试方法在内容提供程序中使用私有方法将表删除到底层数据库中,然后重新创建它们。测试类和内容提供程序类使用相同的包名称,因此私有方法对测试可见。但是,它在内容提供商之外是不可见的,因此没有其他人能够调用它,并且它没有Javadoc。
如果这还不够,可以使用ContentProvider.call()方法来控制提供程序(通过调用ContentResolver.call())。