This article may be too technical for most readers to understand.(February 2010) |
Mockito is an open source testing framework for Java released under the MIT License. The framework allows the creation of test double objects (mock objects) in automated unit tests for the purpose of test-driven development (TDD) or behavior-driven development (BDD).
Developer(s) | Szczepan Faber, Brice Dutheil, Rafael Winterhalter, Tim van der Lippe and others. |
---|---|
Stable release | 5.4.0
/ June 18, 2023 |
Repository | github |
Written in | Java |
Type | Testing |
License | MIT License |
Website | site |
The framework's name and logo are a play on mojitos, a type of drink.
Mockito allows developers to verify the behavior of the system under test (SUT) without establishing expectations beforehand. One of the criticisms of mock objects is that there is a tight coupling of the test code to the system under test.[6] Mockito attempts to eliminate the expect-run-verify pattern[7] by removing the specification of expectations. Mockito also provides some annotations for reducing boilerplate code.[8]
Mockito began by expanding on the syntax and functionality of EasyMock.[9][10]
Consider this decoupled Hello world program; we may unit test some of its parts, using mock objects for other parts.
package org.examples;
import java.io.IOException;
public class HelloApplication {
public static interface Greeter {
String getGreeting(String subject);
String getIntroduction(String actor);
}
public static class HelloGreeter implements Greeter {
private String hello;
private String segmenter;
public HelloGreeter(String hello, String segmenter) {
this.hello = hello;
this.segmenter = segmenter;
}
public String getGreeting(String subject) {
return hello + " " + subject;
}
public String getIntroduction(String actor) {
return actor+segmenter;
}
}
public static interface HelloActable {
void sayHello(String actor, String subject) throws IOException;
}
public static class HelloAction implements HelloActable {
private Greeter helloGreeter;
private Appendable helloWriter;
public HelloAction(Greeter helloGreeter, Appendable helloWriter) {
super();
this.helloGreeter = helloGreeter;
this.helloWriter = helloWriter;
}
public void sayHello(String actor, String subject) throws IOException {
helloWriter.append(helloGreeter.getIntroduction(actor)).append(helloGreeter.getGreeting(subject));
}
}
public static void main(String... args) throws IOException {
new HelloAction(new HelloGreeter("hello", ": "), System.out).sayHello("application", "world");
}
}
The result of HelloApplication launching will be the following:
application: hello world
Unit test for HelloActable component may look like this:
package org.examples;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import org.junit.Before;
import org.junit.Test;
import org.examples.HelloApplication.HelloActable;
import org.examples.HelloApplication.HelloAction;
import org.examples.HelloApplication.Greeter;
public class HelloActionUnitTest {
Greeter helloGreeterMock;
Appendable helloWriterMock;
HelloActable helloAction;
@Before
public void setUp() {
helloGreeterMock = mock(Greeter.class);
helloWriterMock = mock(Appendable.class);
helloAction = new HelloAction(helloGreeterMock, helloWriterMock);
}
@Test
public void testSayHello() throws Exception {
when(helloWriterMock.append(any(String.class))).thenReturn(helloWriterMock);
when(helloGreeterMock.getIntroduction(eq("unitTest"))).thenReturn("unitTest : ");
when(helloGreeterMock.getGreeting(eq("world"))).thenReturn("hi world");
helloAction.sayHello("unitTest", "world");
verify(helloGreeterMock).getIntroduction(eq("unitTest"));
verify(helloGreeterMock).getGreeting(eq("world"));
verify(helloWriterMock, times(2)).append(any(String.classMockito Tutorials:
Mockito is a mocking framework for Java. It is inspired by EasyMock but aims to simplify mock creation even further
Latest online Mockito Tutorials with example so this page for both freshers and experienced candidate who want to get job in Mockito company