EasyMock - createNiceMock
EasyMock.createNiceMock () crea un mock e imposta l'implementazione predefinita di ogni metodo del mock. Se viene utilizzato EasyMock.createMock (), l'invocazione del metodo mock genera un errore di asserzione.
Sintassi
calcService = EasyMock.createNiceMock(CalculatorService.class);
Esempio
Step 1: Create an interface called CalculatorService to provide mathematical functions.
File: CalculatorService.java
public interface CalculatorService {
public double add(double input1, double input2);
public double subtract(double input1, double input2);
public double multiply(double input1, double input2);
public double divide(double input1, double input2);
}
Step 2: Create a JAVA class to represent MathApplication
File: MathApplication.java
public class MathApplication {
private CalculatorService calcService;
public void setCalculatorService(CalculatorService calcService){
this.calcService = calcService;
}
public double add(double input1, double input2){
return calcService.add(input1, input2);
}
public double subtract(double input1, double input2){
return calcService.subtract(input1, input2);
}
public double multiply(double input1, double input2){
return calcService.multiply(input1, input2);
}
public double divide(double input1, double input2){
return calcService.divide(input1, input2);
}
}
Step 3: Test the MathApplication class
Testiamo la classe MathApplication, inserendovi una simulazione di calculatorService. Mock sarà creato da EasyMock.
Qui abbiamo aggiunto una chiamata al metodo fittizio, add (), tramite wait (). Tuttavia, durante i test, abbiamo chiamato subtract () e anche altri metodi. Quando creiamo un oggetto fittizio utilizzando EasyMock.createNiceMock (), è disponibile l'implementazione predefinita con i valori predefiniti.
File: MathApplicationTester.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)
public class MathApplicationTester {
private MathApplication mathApplication;
private CalculatorService calcService;
@Before
public void setUp(){
mathApplication = new MathApplication();
calcService = EasyMock.createNiceMock(CalculatorService.class);
mathApplication.setCalculatorService(calcService);
}
@Test
public 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 functionality
Assert.assertEquals(mathApplication.add(20.0, 10.0),30.0,0);
//test the subtract functionality
Assert.assertEquals(mathApplication.subtract(20.0, 10.0),0.0,0);
//test the multiply functionality
Assert.assertEquals(mathApplication.divide(20.0, 10.0),0.0,0);
//test the divide functionality
Assert.assertEquals(mathApplication.multiply(20.0, 10.0),0.0,0);
//verify call to calcService is made or not
EasyMock.verify(calcService);
}
}
Step 4: Execute test cases
Crea un file di classe java denominato TestRunner inC:\> EasyMock_WORKSPACE per eseguire uno o più casi di test.
File: TestRunner.java
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(MathApplicationTester.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
Step 5: Verify the Result
Compila le classi usando javac compilatore come segue:
C:\EasyMock_WORKSPACE>javac MathApplicationTester.java
Ora esegui il Test Runner per vedere il risultato:
C:\EasyMock_WORKSPACE>java TestRunner
Verifica l'output.
true