我需要为每次测试运行重新创建一个数据库。我正在使用Robotium
为我的应用程序自动化测试,因此每个测试都会扩展ActivityInstrumentationTestCase2
。我发现的是,我可以使用RenamingDelegatingContext
来模拟新的Context
。但只要我从ActivityInstrumentationTestCase2
延伸,我就无法使用setActivityContext()
类中的ActivityUnitTestCase
。我可能走错了路。如果有的话,请建议另一种可能的方法来重新创建数据库。非常感谢你。
答案 0 :(得分:4)
我试了一段时间来使用renamingdelegatingcontext但是失败了,因为据我所知在ActivityInstrumentationTestCase2中使用它我不得不模拟我不能做的应用程序,因为我们的应用程序实际上扩展了应用程序并且具体在onCreate中的代码,它成为一个完整的可怕问题。
然后我采取了简单的路线,并在每次运行之间清除了数据库(以及共享首选项和cookie)
context.deleteDatabase(DATABASE_NAME)
我发现这一点(令人惊讶地)并不太慢(与通过GUI测试任何内容相比都没有。)您可能会发现需要手动调用应用程序onCreate每个测试,具体取决于应用程序的编码方式为了使其正确设置,但这很容易做到。
哦,只是说我曾经将所有这些代码放在一个扩展ActivityInstrumentationTestCase2的新测试类中,所以它在设置/拆卸过程中自动发生。