TestsUnitaires:EasyMock

De WIKI.minetti.org
Révision de 7 avril 2016 à 16:47 par Jp (discussion | contributions) (Page créée avec « == But == [http://www.easymock.org/ EasyMock] est une API permettant de créer des mock objects pour faire des tests unitaires. Ainsi, il est possible de vérifier le séq... »)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

But

EasyMock est une API permettant de créer des mock objects pour faire des tests unitaires. Ainsi, il est possible de vérifier le séquencement des appels et les valeurs des données envoyées aux mock objets, mais aussi, de retourner des valeurs précises à l'objet testé.

API et dépendances

Avant d'implémenter des mock objects, il faut récupérer tous les JAR requis pour les référencer dans le classpath du projet:

Avec Maven, on ajoutera la dépendance suivante dans le fichier pom.xml:

<dependency>
    <groupId>org.easymock</groupId>
    <artifactId>easymock</artifactId>
    <version>3.1</version>
    <scope>test</scope>
</dependency>

Creation d'un mock object

La création et la gestion des mock objects se fait à l'aide d'une instance de l'interface org.easymock.IMocksControl obtenue par la classe org.easymock.EasyMock.

IMocksControl mocksControl = EasyMock.createStrictControl();
MyInterface myMockObject = mocksControl.createMock(MyInterface.class);

Création de l'objet à tester

En principe, les mock objects sont injectés dans la classe à tester lors de son instanciation en les passant en paramètres dans le constructeur. Pour faire un authentique test unitaire, il faut que tous les objets, hormis celui à tester, soient mockés.

MyObject myObject = new MyObject(myMockObject);

Enregistrement du scénario attendu

Le principe est d'indiquer à EasyMock, le séquencement des appels aux différents mock objects dans le bon ordre:

myMockObject1.methodA();
myMockObject2.method();
myMockObject1.methodB();

Des opérateurs fournis dans la classe org.easymock.EasyMock, permettent de tester les valeurs des paramètres des méthodes appelées:

myMockObject.methodA(EasyMock.eq(value), EasyMock.eq(10238));
myMockObject.methodB((Integer)EasyMock.notNull());

Pour retourner une donnée:

myMockObject.getData();
EasyMock.expectLastCall().andReturn(null);

Pour simuler la levée d'une exception:

myMockObject.getData();
EasyMock.expectLastCall().andThrow(new RuntimeException());

L'enregistrement du scénario doit se terminer par:

mocksControl.replay();

Après un test, la création d'un nouveau scénario doit être précédée par:

mocksControl.reset();

Vérification

Une fois le test lancé et terminé, la vérification se fait en appelant le méthode verify de l'instance de l'interface org.easymock.IMocksControl:

mocksControl.verify();

Liens externes