I upgraded Mockito from 1.X to 2.X. (Because I wanted to try out the JUnit 5 MockitoExtension.
JUnit 4
I like @RunWith(MockitoJUnitRunner.class). The two main benefits:
- Inject mocks as instance variables instead of static call to MockitoAnnotations.initMocks(this);
- Tells you about unnecessary mock setup calls you have.
JUnit 5
Instead of the Mockito Runner, you use @ExtendWith(MockitoExtension.class). This was written by the JUnit 5 team. The two main benefits:
- Inject mocks as instance variables
- Inject mocks as method parameters
What’s missing
In JUnit 5, Mockito no longer tells you about extra setup code that you should delete. And neither version automatically calls verify() like JMock does. I miss that feature and wish Mockito had it. It is nice to be able to have the mock library tell you the actual code didn’t call an expected value without having to remember to code a call to verify the mock. (If Mockito does have it and I didn’t notice, please leave a comment!)