Mockito文档说,你不能模拟最终的类,但通过Gradle运行这样的测试是有效的。具体来说,我在一个Android项目中进行了一个单元测试,它包含以下内容:
@Mock
private ViewTreeObserver mockTreeObserver;
...
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
...
}
ViewTreeObserver
是最后一个类。
我需要在Eclipse和AndroidStudio中支持遗留的开发环境。使用包装器的Studio和Gradle命令行都通过了。Eclipse在中失败
org.mockito.exceptions.base.MockitoException:
Cannot mock/spy class android.view.ViewTreeObserver
以及"为什么?"如果可能的话,我真的需要知道如何让Eclipse通过(而不需要重写测试)。
各种库版本如下:
- gradle-2.2.1(Studio和命令行使用的包装器)
- mockito-core-1.9.5
- 机器人电气-2.4
- android-20(Eclipse中的单元测试类路径配置)
我在根据Rene的建议创建示例构建时发现了这个问题。有问题的测试缺少@RunWith(RobolectricGradleTestRunner.class)
注释。
RobolectricGradleTestRunner
扩展了RobolectricTestRunner
并解析了各种位和块,包括在所有Intellij、eclipse和Gradle命令行中运行测试的能力。
没有发现这一点,感觉有点愚蠢。为我辩护,我没有编写那个特定的测试。。。