9

I'm having troubles using @Mock annotation with my instrumentation test.

Here's my gradle dependencies:

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

Here's a sample piece of code:

@Mock View mockView

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

This crashes with

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)
...

However, this works

View mockView

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

Anyone has any ideas what's going on here?

Jin
  • 6,055
  • 2
  • 39
  • 72

2 Answers2

3

Its a bug in dexmaker. I have submitted a pull request to fix: https://github.com/crittercism/dexmaker/pull/24

Note that you may be able to work around it by avoiding null member variables in your test class.

Andy Piper
  • 563
  • 4
  • 10
1

I've created an issue there https://github.com/mockito/mockito/issues/392

really bad hotfix:

try {
  MockitoAnnotations.initMocks(this);
} catch (NullPointerException e) {
  //waiting for fix
}
Vova K.
  • 678
  • 6
  • 19