Bonjour à tous, je suis nouveau sur ce forum.
Je tente d'intégrer des testes unitaires dans un projet. (chose que j'avais toujours bâclé jusqu'ici).
Pour tenter de bien les gérer cette fois-ci, je me suis intéressé à l'utilisation de mock objets (easyMock pour le moment mais après une visite de l'une de vos discussions, je compte essayer mockito).
Mon problème se situe plus au niveau pattern d'utilisation des mock objets que niveau implementation :
Pour faire simple, j'ai une structure de graph (graph, noeuds et arcs) et un arc contient 2 noeuds, le noeud source et le noeud cible.
Pour l'arc je pense avoir compris comment faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 public class ArcImple implements IArc { private INode source; private INode cible; public ArcImpl(INode source, INode sink) { .... } } public class ArcTest { private IMocksControl control; private IArc arcToTest; private INode sourceMock; private INode sinkMock; @before public void setUp() { this.sourceMock = this.control.createMock(INode.class); this.sinkMock = this.control.createMock(INode.class); this.arcToTest = Factory.createArc(this.sinkMock, this.arcToTest) } // puis les méthodes à tester }
Voila pour cette classe, je ne detail pas ces testes car je pense les avoir bien réussis. Mon problème se pose pour la classe Graph. Voici à quoi elle ressemble (je simplifie en oubliant dans cet exemple les arcs):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public interface IGraph { void addNode(INode node); } public class Graph implements IGraph { private Set<INode> nodes; public Graph() { nodes = new hastSet<INode>(); } public void AddNode(INode node) { nodes.addNode(node); // traitements supplémentaires } }
Voila, mon probleme se pose pour tester la methot addNode(INode node) de IGraph, en particulier, je voudrai savoir si elle utilise bien la methode "add()" de l'interface "Set".
Mais cette collection est totalement encapsulé dans Graph, il y a ni getter ni setter dessus. donc je ne peux faire ceci :
Voila, j'espère que mon post n'est pas trop long et que j'ai pu bien faire comprendre mon petit soucis.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Set<Inode> nodesMock = this.control.createMock(Set.class) this.graphToTest.setNodes(nodesMock);
Cordialement,
Jérémie
Partager