0

我正在为启动服务的活动编写 Junit 测试:

startService(new Intent(this, MyClass.class));

为了测试的目的,我想MyClass.class用一个存根类(MyStubClass.class)替换

我对 SOF 进行了广泛的搜索,但找不到解决方案。是否可以在不向应用程序添加测试相关代码的情况下进行交换?

4

1 回答 1

0

评论上面的帖子,虽然我同意这篇文章所说的大部分内容,但我不确定我是否同意所有这些,甚至是否需要进行如此细粒度的区分。在我看来,我认为模拟是运行时的替换,而存根是未完成的工作或依赖于多态性而不是实际替换的特定于测试的实现。但是,我不是专家,所以对我的意见持保留态度。无论如何,当您用模拟版本替换一个类时,不需要在模拟实现中做任何花哨的事情。

无论如何,这是您要求的文档:http: //jmockit.googlecode.com/svn/trunk/www/tutorial/StateBasedTesting.html#mocks

我使用 jmockit 来存根我不关心实现的接口,用不抛出异常的存根替换 Android 存根实现,有时用最小功能实现替换那些相同的存根。就我而言,我希望能够快速运行我的单元测试,这意味着在模拟器或物理设备之外运行它们。如果您有兴趣做这种事情,那么将模拟包与 Robolectric 之类的东西结合使用可以挽救生命。

于 2012-08-20T20:47:55.370 回答