EasyMock - createMock
Jusqu'à présent, nous avons utilisé des annotations pour créer des simulations. EasyMock fournit diverses méthodes pour créer des objets simulés. EasyMock.createMock () crée des simulations sans se soucier de l'ordre des appels de méthode que la simulation va faire en temps voulu.
Syntaxe
calcService = EasyMock.createMock(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é deux appels de méthode fictive, add () et soustract (), à l'objet fictif via expect (). Cependant, lors des tests, nous avons appelé soustract () avant d'appeler add (). Lorsque nous créons un objet fictif en utilisant EasyMock.createMock (), l'ordre d'exécution de la méthode n'a pas d'importance.
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.createMock(CalculatorService.class);
mathApplication.setCalculatorService(calcService);
}
@Test
public 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 functionality
Assert.assertEquals(mathApplication.subtract(20.0, 10.0),10.0,0);
//test the add functionality
Assert.assertEquals(mathApplication.add(20.0, 10.0),30.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 dans C:\> 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
Exécutez maintenant le Test Runner pour voir le résultat:
C:\EasyMock_WORKSPACE>java TestRunner
Vérifiez la sortie.
true