如何还原单元测试期间进行的数据库更改?

时间:2012-02-09 19:49:31

标签: android testing

我需要在每次测试后返回'清理'db状态,恢复测试执行期间所做更改的最简单方法是什么?

4 个答案:

答案 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())。