EasyMock - createNiceMock
EasyMock.createNiceMock () crée une maquette et définit l'implémentation par défaut de chaque méthode de la maquette. Si EasyMock.createMock () est utilisé, l'appel de la méthode fictive génère une erreur d'assertion.
Syntaxe
calcService = EasyMock.createNiceMock(CalculatorService.class);
Exemple
Step 1: Create an interface called CalculatorService to provide mathematical functions.
Fichier: 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
Fichier: 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
Testons la classe MathApplication, en y injectant un simulacre de calculatorService. Mock sera créé par EasyMock.
Ici, nous avons ajouté un appel de méthode simulée, add (), via expect (). Cependant, lors des tests, nous avons également appelé soustract () et d'autres méthodes. Lorsque nous créons un objet fictif à l'aide d'EasyMock.createNiceMock (), l'implémentation par défaut avec les valeurs par défaut est disponible.
Fichier: 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
Créez un fichier de classe Java nommé TestRunner dansC:\> EasyMock_WORKSPACE pour exécuter des cas de test.
Fichier: 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
Compilez les classes en utilisant javac compilateur comme suit:
C:\EasyMock_WORKSPACE>javac MathApplicationTester.java
Maintenant, exécutez le Test Runner pour voir le résultat:
C:\EasyMock_WORKSPACE>java TestRunner
Vérifiez la sortie.
true