After using EasyMock for several months I found Mockito. Yeah, the name sounds terrible in Spanish: little snot. It will be hard for me to tell spanish developers mockito features avoiding laughs. Guys, be careful with names next time 🙂
Mockito API is so cool that you no longer have to care if you’re using a mock or a stub. You just use test doubles the way you need them and nothing more. Record/Replay metaphor is no longer used. The framework knows when are you writing the arrange, the act and the assert steps.
See how easy it is to mock out a void method (EmailAddress is a JPA Model):
@Test
public void persistorSaves() throws Exception {
EmailAddress emailMock =
mock(EmailAddress.class);
Persistor persistor =
new Persistor();
persistor.Save(emailMock);
verify(emailMock).save();
}
Check out some examples: http://schuchert.wikispaces.com/Mockito.LoginServiceExample
My favorite mock frameworks so far are Mockito for Java and Rhino.Mocks for C#. They share pretty much all these nice features.