In the below example we use Calcuator Obect which computes the area of Rectangle using Rectangle Objects.
Frame works used
CalculatorTestWithSpringAndMockito.java
Calculator.java
Rectangle.java
beans.xml
Frame works used
- Spring -Dependency Injection
- Mockito- Mocking java Obejcts
- JUnit- Unit Test frame work.
CalculatorTestWithSpringAndMockito.java
package test.com.lac.tut.mockito;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.lac.tut.mockito.Calculator;
import com.lac.tut.mockito.Rectangle;
@ContextConfiguration(locations = { "classpath:/beans.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
public class CalculatorTestWithSpringAndMockito {
@Mock
Rectangle rectangle;
@InjectMocks
@Autowired
Calculator calculator;
@Before
public void create() {
initMocks(this);// Initialize this mock objects
when(rectangle.getLength()).thenReturn(10);
when(rectangle.getBreadth()).thenReturn(40);
}
@Test
public void test() {
assertEquals(calculator.getArea(), 400);
}
}
Explanation: In the above example the mocked rectangle object is injected into calculator object. @InjectMocks annotation of Mockito inject mocked rectangle object into calculator bean. The annotation @RunWith makes the class is runned with SpringJUnit4ClassRunner. The annotation ContextConfiguration specifies the path of spring bean definition.Calculator.java
package com.lac.tut.mockito;
public class Calculator {
private Rectangle rectangle;
public Rectangle getRectangle() {
return rectangle;
}
public void setRectangle(Rectangle rectangle) {
this.rectangle = rectangle;
}
public int getArea() {
return rectangle.getLength() * rectangle.getBreadth();
}
}
Rectangle.java
package com.lac.tut.mockito;
public class Rectangle {
public int length;
public int breadth;
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public int getBreadth() {
return breadth;
}
public void setBreadth(int breadth) {
this.breadth = breadth;
}
}
beans.xml