Bonjour.
Je travaille actuellement sur un projet et comme dans tout projet on ecrit des tests. Sauf que ces tests ont une influence sur le design du code.
Typiquement, si j'ai un truc dans ce style
Pour tester unitairement B, je me retrouver a ecrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 struct A{void foo();}; struct B { B(A& aa): a(aa){} A& a; }'
et le code de test suivant :
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 struct ABase { virtual void foo()=0; }; //----VRAI CODE------ struct A : publicABase { virtual void foo(); }; struct B { B(ABase& aa): a(aa){} ABase& a; };
Donc au final, on se retrouve des classes de bases remplies de fonctions virtuelles de partout (Java-like) alors qu'a la base, bah y'en avait pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 //----TEST CODE------ struct FakeA : publicABase { virtual void foo(){/*dummy*/} }; TEST(TESTB) { FakeA a; B b(a); //tests }
Et ca me dérange que le design du code soit impacte par les tests. Pour moi ce sont des choses orthogonales. On devrait tester notre code, pas modifier le code pour écrire des tests.
Pouvez vous éclairer ma lanterne ? Qu'est ce que je loupe ?
Merci !
David.
PS : Si ca vous intéresse, le framework de test c'est Google Test.
Partager