如题,我想知道如何从 Bundle 创建一个桩程序以在JVM上运行(而不是Dalvik)。由于它是 android.os 包的一部分,可能与这种不可能性有关。我的目的是因为我想使用一个运行在JVM上的模拟框架来测试 Activity.onCreate() 方法。我已经找到了这个链接,但它似乎使用了一个剥离了的自定义 android.jar ,因为它相当实验性和未经验证(即使我使用他们的jar也不能复现,也许我需要睡一会儿)。如果有其他替代方法来进行模拟测试,任何见解都将一如既往地受到赞赏。谢谢。
我已经成功地为与android.jar类交互的类编写了java jvm的单元测试。我使用Powermock来模拟所有android类(如Bundle)。这篇文章讲述了使用不会在java jvm上抛出“stub”异常的android jar版本。我没有需要使用不同版本的android jar。使用Powermock,我能够成功地模拟出我需要的任何东西。对我来说,这种单元测试技术并不是实验性的。话虽如此,对于扩展activities、fragments等类的单元测试,会变得非常依赖模拟。我认为将尽可能多的逻辑移动到pojo类中是好的,使您的android扩展类尽可能薄。然后,您可以决定是否值得隔离junit测试android扩展类。如果您愿意,这当然可以做到。您还可以考虑使用Android或Robotium提供的集成测试框架来测试您的android扩展类及其生命周期。