我有一个Android应用程序,我的测试人员正在学习如何使用robotium实现测试。 应用程序有一个实体(对象/ pojo)存储在sqlite数据库中,其中包含id,description和其他一些信息。
我们需要一些如何在测试类中进行设置,以便应用程序具有一个具有确定的id,描述等的实体,可以在测试中使用。
对于数据库访问,我们实现了Dao Pattern + SQLiteOpenHelper的扩展,创建和管理使用Robo Guice注入Activity类的数据库的更新。到目前为止,我们没有使用ContentProviders(Android测试包中有一个MockContentProvider类),但如果这是最好的解决方案,我们可能会迁移到它。
设置实现的要求不是将测试代码与应用程序代码混合在一起。有什么建议?
答案 0 :(得分:1)
我不确定你的意思是“设置实现的要求不是将测试代码与应用程序代码混合。任何建议?”但我猜你的意思是你不想在测试中重用应用程序中的任何代码???
好吧,我担心你最好的选择是编写代码来填充数据库,或者让他们运行应用程序以使其进入给定状态然后进行测试。个人重用您的代码可能是最好的选择,但您必须以正确的方式构建它,并取决于您要测试的内容。例如,如果您正在测试数据库中的某些内容是否正确显示,那么重用我们的代码就可以了。如果您正在测试将数据放入数据库中,那么重用代码就不行了,那么您应该运行应用程序以确保它正确地保存到数据库中。
我喜欢看这个的方式是BDD风格,过去发生过“给定”步骤中的任何事情,你的测试不应该关心它是如何发生的只是因为它发生了它是如何在那个状态并不重要,在这些情况下,速度可能是最重要的部分。