我正在为启动服务的活动编写Junit测试:
startService(new Intent(this, MyClass.class));
出于测试的目的,我想用存根类(MyStubClass.class)替换MyClass.class
我对SOF进行了广泛的搜索,但无法找到解决方案。 是否可以在不向应用程序添加测试相关代码的情况下进行交换?
答案 0 :(得分:0)
评论上述主题,虽然我同意该文章所说的大部分内容,但我不确定我是否同意所有内容,甚至不需要做出如此精细的区分。在我看来,我认为模拟作为运行时替换和存根作为未完成的工作或特定于测试的实现,依赖于多态而非实际替换。但是,我不是专家,所以我的意见一丝不苟。在任何情况下,当您使用模拟版本替换类时,不需要在模拟实现中执行任何花哨的操作。
无论如何,这是您要求的文件:http://jmockit.googlecode.com/svn/trunk/www/tutorial/StateBasedTesting.html#mocks
我已经使用jmockit来存储我不关心实现的接口,用不会抛出异常的存根替换Android存根实现,有时用最少功能的实现来替换那些相同的存根。在我的情况下,我希望能够快速运行我的单元测试,这意味着在模拟器或物理设备之外运行它们。如果你有兴趣做这样的事情,使用像Robolectric这样的模拟包可以节省生命。