是否可以在JVM下创建android.os.Bundle存根以进行测试?

时间:2011-09-13 14:15:08

标签: android unit-testing mocking stub

正如标题所说,我想知道,如果可能的话,我如何从Bundle创建一个存根以在JVM上运行(所以不是Dalvik)。由于它是android.os包的一部分,可能与那种不可能性有关。

我的观点是因为我想使用在JVM上运行的模拟框架来测试Activity.onCreate()方法。

我已经找到了这个link,但似乎他们使用了一个剥离的自定义android.jar,因为它相当实验性且未经证实(但我甚至无法使用他们的jar重现,也许我需要一些睡眠)。< / p>

如果还有另一种模拟测试方法,那么任何见解都会受到赞赏。

感谢。

1 个答案:

答案 0 :(得分:2)

我已经成功地在java jvm上为与android.jar类交互的类编写单元测试。我使用Powermock来模拟所有的android类(比如Bundle)。

这个link讨论了如何使用不会在java jvm上抛出“stub”异常的android jar版本。我不需要使用不同版本的android jar。使用Powermock我已经成功地模拟了我需要的任何东西。对我来说,这种单元测试技术不是实验性的。

话虽如此 - 单元测试扩展活动,片段等的类变得非常沉重。我认为将尽可能多的逻辑移动到pojo类中是很好的,这样可以保持你的android扩展类尽可能薄。你可以决定是否觉得值得隔离junit测试android扩展类。如果你愿意,肯定可以做到。您还可以考虑使用AndroidRobotium提供的集成测试框架来测试您的Android扩展类及其生命周期。