如何为每次测试运行重新创建数据库?

时间:2013-02-28 15:54:33

标签: android testing robotium

我需要为每次测试运行重新创建一个数据库。我正在使用Robotium为我的应用程序自动化测试,因此每个测试都会扩展ActivityInstrumentationTestCase2。我发现的是,我可以使用RenamingDelegatingContext来模拟新的Context。但只要我从ActivityInstrumentationTestCase2延伸,我就无法使用setActivityContext()类中的ActivityUnitTestCase。我可能走错了路。如果有的话,请建议另一种可能的方法来重新创建数据库。非常感谢你。

1 个答案:

答案 0 :(得分:4)

我试了一段时间来使用renamingdelegatingcontext但是失败了,因为据我所知在ActivityInstrumentationTestCase2中使用它我不得不模拟我不能做的应用程序,因为我们的应用程序实际上扩展了应用程序并且具体在onCreate中的代码,它成为一个完整的可怕问题。

然后我采取了简单的路线,并在每次运行之间清除了数据库(以及共享首选项和cookie)

context.deleteDatabase(DATABASE_NAME)

我发现这一点(令人惊讶地)并不太慢(与通过GUI测试任何内容相比都没有。)您可能会发现需要手动调用应用程序onCreate每个测试,具体取决于应用程序的编码方式为了使其正确设置,但这很容易做到。

哦,只是说我曾经将所有这些代码放在一个扩展ActivityInstrumentationTestCase2的新测试类中,所以它在设置/拆卸过程中自动发生。