我在工具测试中使用@Mock批注时遇到了麻烦。

这是我的gradle依赖项:

androidTestCompile 'org.mockito:mockito-core:1.10.19'
androidTestCompile 'com.google.dexmaker:dexmaker:1.2'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2'

这是一段示例代码:
@Mock View mockView

@Before
public void setup() {
    MockitoAnnotation.initMocks(this);
    ...
}

这崩溃
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
at com.google.dexmaker.mockito.DexmakerMockMaker.getInvocationHandlerAdapter(DexmakerMockMaker.java:80)
at com.google.dexmaker.mockito.DexmakerMockMaker.getHandler(DexmakerMockMaker.java:75)
...

但是,这有效
View mockView

@Before
public void setup() {
    mockView = Mockito.mock(View.class);
    ...
}

任何人都知道这是怎么回事吗?

最佳答案

它是dexmaker中的错误。我已提交拉取请求以进行修复:
https://github.com/crittercism/dexmaker/pull/24

请注意,您可以通过在测试类中避免使用空成员变量来解决此问题。

10-04 10:14