Influence des tests sur le design du code
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
Code:
1 2 3 4 5 6 7
|
struct A{void foo();};
struct B {
B(A& aa): a(aa){}
A& a;
}' |
Pour tester unitairement B, je me retrouver a ecrire :
Code:
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;
}; |
et le code de test suivant :
Code:
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
} |
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.
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.