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

EasyMock - createNiceMock


Previous Page Next Page  

EasyMock.createNiceMock() creates a mock and sets the default implementation of each method of the mock. If EasyMock.createMock() is used, then invoking the mock method throws assertion error.

Syntax


calcService = EasyMock.createNiceMock(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 one mock method call, add(), via expect(). However during testing, we ve called subtract() and other methods as well. When we create a mock object using EasyMock.createNiceMock(), the default implementation with default values are available.

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.createNiceMock(CalculatorService.class);
      mathApppcation.setCalculatorService(calcService);
   }
   @Test
   pubpc void testCalcService(){
      //add the behavior to add numbers
      EasyMock.expect(calcService.add(20.0,10.0)).andReturn(30.0);
      
      //activate the mock
      EasyMock.replay(calcService);	
      
      //test the add functionapty
      Assert.assertEquals(mathApppcation.add(20.0, 10.0),30.0,0);
      
      //test the subtract functionapty
      Assert.assertEquals(mathApppcation.subtract(20.0, 10.0),0.0,0);
      
      //test the multiply functionapty
      Assert.assertEquals(mathApppcation.spanide(20.0, 10.0),0.0,0);		
      
      //test the spanide functionapty
      Assert.assertEquals(mathApppcation.multiply(20.0, 10.0),0.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 inC:> 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.


true
Advertisements