In this Article, I will give you brief introduction about Mockito.
Simple program that helps to understands mockito stubbing.
What is Mockito ?
1) An open source testing framework for Java.
2) The framework allows the creation of mock objects in
automated unit tests for the purpose of Test-driven Development (TDD)
or Behavior Driven Development (BDD).
Tools Uses :
1) mockito – 2.0.29-beta
2) eclipse version Luna 4.4.1.
3) Maven 3.3.3
4) JDK 1.6
Simple “Hello wold” program to use Mockito.
Simple Steps to follow,
1) Create a maven project.
2) Add mockito dependency to pom.xml file
3) Write a simple program that using Mockito framework.
4) Demo, run and verify the out put
Dependency that need to be added to pom.xml file is,
org.mockito mockito-core 2.0.28-beta
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.devjavasource.mokito</groupId> <artifactId>BasicExample</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>BasicExample</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>2.0.28-beta</version> </dependency> </dependencies> </project>
Write a simple program that using Mockito framework :
1) import Mockito statically.
import static org.mockito.Mockito.*;
2) Creating a mock object.
Using mock() method, we can create a mock object.
we need to pass the object to the mock() method.
// How to create a mock object on user defined entities. Bank mockedBank = mock(Bank.class); // How to create a mock object on java pre-defined classes. LinkedList mockedList = mock(LinkedList.class);
3) Stubbing the mock object.
We can stubbing the mock object using “when” and “thenReturn”.
// stubbing appears before the actual execution when( mockedList.get(0)).thenReturn(bank); // If we try to get second element in list, throws RuntimeException when( mockedList.get(1)).thenThrow(new RuntimeException()); // This returns bank object, that we stubbed in previous step for index 0 System.out.println("Bank Object is:" + mockedList.get(0) );
4) Verify the mock object.
we can use verify() method to verify the results.
verify(mockedBank).add(bank);
Here are java source code,
App.java
package com.devjavasource.mokito.BasicExample; import static org.mockito.Mockito.*; import java.util.LinkedList; public class App { public static void main( String[] args ) { // Once created, mock will remember all interactions. new App().useCase1(); // How to do stubbing new App().useCase2(); } private void useCase2(){ Bank bank = new Bank(101,"OAK","WELLS FORGO"); LinkedList mockedList = mock(LinkedList.class); // stubbing appears before the actual execution when( mockedList.get(0)).thenReturn(bank); // If we try to get second element in list, throws RuntimeException when( mockedList.get(1)).thenThrow(new RuntimeException()); // This returns bank object, that we stubbed in previous step for index 0 System.out.println("\nBank Object is:" + mockedList.get(0) ); // This returns null, because, no stubbing for index 999 System.out.println(mockedList.get(999)); } private void useCase1(){ Bank bank = new Bank(101,"OAK","WELLS FORGO"); //Create a mock object Bank mockedBank = mock(Bank.class); //using mock object mockedBank.add(bank); mockedBank.clear(); System.out.println("mockedBank list is: " + mockedBank.get()); //Even we clear the list also, but mock will remember all the interactions. //verification verify(mockedBank).add(bank); verify(mockedBank).clear(); System.out.println("mockedBank list is: " + mockedBank.get()); //Create a mock object Bank bank1 = new Bank(101,"OAK","WELLS FORGO"); //verify(mockedBank).add(bank1); // This will throw an error } }
Entity bean class is,
Bank.java
package com.devjavasource.mokito.BasicExample; import java.util.ArrayList; import java.util.List; public class Bank { private int bankId; private String bankAddress; private String bankName; private ListbankList = null; Bank(int inBankId, String inBankAddress, String inBankName){ bankId = inBankId; bankAddress = inBankAddress; bankName = inBankName; } public void add(final Bank inBank){ if(bankList == null){ bankList = new ArrayList (); } } public void clear(){ if(bankList != null) bankList.clear(); } public List get(){ return bankList; } public int getBankId() { return bankId; } public String getBankAddress() { return bankAddress; } public String getBankName() { return bankName; } }
Demo :
Select App.java and “Run As” -> “Java Application”
Out Put:
mockedBank list is: [] mockedBank list is: [] Bank Object is:com.devjavasource.mokito.BasicExample.Bank@14d3bc22 null
You can download complete project, Here
BasicMockitoExample
*** Venkat – Happy leaning ****