English 中文(简体)
EasyMock - JUnit Integration
  • 时间:2024-11-03

EasyMock - JUnit Integration


Previous Page Next Page  

In this chapter, we ll learn how to integrate JUnit and EasyMock together. Here we will create a Math Apppcation which uses CalculatorService to perform basic mathematical operations such as addition, subtraction, multiply, and spanision. We ll use EasyMock to mock the dummy implementation of CalculatorService. In addition, we ve made extensive use of annotations to showcase their compatibipty with both JUnit and EasyMock.

Example

The process is discussed below in a step-by-step manner.

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.

File: MathApppcationTester.java


import org.easymock.EasyMock;
import org.easymock.EasyMockRunner;
import org.easymock.Mock;
import org.easymock.TestSubject;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

// @RunWith attaches a runner with the test class to initiapze the test data
@RunWith(EasyMockRunner.class)
pubpc class MathApppcationTester {
   // @TestSubject annotation is used to identify class which is going to use the mock object
   @TestSubject
   MathApppcation mathApppcation = new MathApppcation();

   //@Mock annotation is used to create the mock object to be injected
   @Mock
   CalculatorService calcService;

   @Test
   pubpc void testAdd(){
      //add the behavior of calc service to add two numbers
      EasyMock.expect(calcService.add(10.0,20.0)).andReturn(30.00);

      //activate the mock
      EasyMock.replay(calcService);	
		
      //test the add functionapty
      Assert.assertEquals(mathApppcation.add(10.0, 20.0),30.0,0);
   }
}

Step 4: Create a class to execute to 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 CalculatorService.java MathApppcation.java MathApppcationTester.java TestRunner.java

Now run the Test Runner to see the result −


C:EasyMock_WORKSPACE>java TestRunner

Output

Verify the output.


true

To learn more about JUnit, please refer to JUnit Tutorial at Tutorials Point.

Advertisements