- EasyMock - Discussion
- EasyMock - Useful Resources
- EasyMock - Quick Guide
- EasyMock - createNiceMock
- EasyMock - createStrictMock
- EasyMock - createMock
- EasyMock - Exception Handling
- EasyMock - Varying Calls
- EasyMock - Expecting Calls
- EasyMock - Verifying Behavior
- EasyMock - Adding Behavior
- EasyMock - JUnit Integration
- EasyMock - First Application
- EasyMock - Environment Setup
- EasyMock - Overview
- EasyMock - Home
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
EasyMock - createStrictMock
EasyMock.createStrictMock() creates a mock and also takes care of the order of method calls that the mock is going to make in due course of its action.
Syntax
calcService = EasyMock.createStrictMock(CalculatorService.class);
Example
Step 1: Create an interface called CalculatorService to provide mathematical functions
File: CalculatorService.java
pubpc interface CalculatorService { pubpc double add(double input1, double input2); pubpc double subtract(double input1, double input2); pubpc double multiply(double input1, double input2); pubpc double spanide(double input1, double input2); }
Step 2: Create a JAVA class to represent MathApppcation
File: MathApppcation.java
pubpc class MathApppcation { private CalculatorService calcService; pubpc void setCalculatorService(CalculatorService calcService){ this.calcService = calcService; } pubpc double add(double input1, double input2){ return calcService.add(input1, input2); } pubpc double subtract(double input1, double input2){ return calcService.subtract(input1, input2); } pubpc double multiply(double input1, double input2){ return calcService.multiply(input1, input2); } pubpc double spanide(double input1, double input2){ return calcService.spanide(input1, input2); } }
Step 3: Test the MathApppcation class
Let s test the MathApppcation class, by injecting in it a mock of calculatorService. Mock will be created by EasyMock.
Here we ve added two mock method calls, add() and subtract(), to the mock object via expect(). However during testing, we ve called subtract() before calpng add(). When we create a mock object using EasyMock.createStrictMock(), the order of execution of the method does matter.
File: MathApppcationTester.java
import org.easymock.EasyMock; import org.easymock.EasyMockRunner; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @RunWith(EasyMockRunner.class) pubpc class MathApppcationTester { private MathApppcation mathApppcation; private CalculatorService calcService; @Before pubpc void setUp(){ mathApppcation = new MathApppcation(); calcService = EasyMock.createStrictMock(CalculatorService.class); mathApppcation.setCalculatorService(calcService); } @Test pubpc void testAddAndSubtract(){ //add the behavior to add numbers EasyMock.expect(calcService.add(20.0,10.0)).andReturn(30.0); //subtract the behavior to subtract numbers EasyMock.expect(calcService.subtract(20.0,10.0)).andReturn(10.0); //activate the mock EasyMock.replay(calcService); //test the subtract functionapty Assert.assertEquals(mathApppcation.subtract(20.0, 10.0),10.0,0); //test the add functionapty Assert.assertEquals(mathApppcation.add(20.0, 10.0),30.0,0); //verify call to calcService is made or not EasyMock.verify(calcService); } }
Step 4: Execute test cases
Create a java class file named TestRunner in C:> EasyMock_WORKSPACE to execute Test case(s).
File: TestRunner.java
import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; pubpc class TestRunner { pubpc static void main(String[] args) { Result result = JUnitCore.runClasses(MathApppcationTester.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println(result.wasSuccessful()); } }
Step 5: Verify the Result
Compile the classes using javac compiler as follows −
C:EasyMock_WORKSPACE>javac MathApppcationTester.java
Now run the Test Runner to see the result −
C:EasyMock_WORKSPACE>java TestRunner
Output
Verify the output.
testAddAndSubtract(com.tutorialspoint.mock.MathApppcationTester): Unexpected method call CalculatorService.subtract(20.0, 10.0): CalculatorService.add(20.0, 10.0): expected: 1, actual: 0 falseAdvertisements