Plus je lis par exemple la maquette, plus je confus ...Comment écrire un test unitaire en utilisant un objet simulé?
J'ai méthode CLASSA manger() qui appelle FatDude classe eatThemAll()
public class classA {
FatDude dude = new FatDude();
public String eat() {
String result = dude.eatThemAll();
}
}
public class FatDude {
public String eatThemAll() {
return "never full";
}
}
Maintenant, je veux tester CLASSA manger () en se moquant de la classe FatDude.
public class MockFatDude extends FatDude {
//override
public String eatThemAll() {
return "very full";
}
}
------------- test --------------
public class DoTest {
public void runTest() {
classA cl = new ClassA();
String out = cl.eat();
assertEqual(out, "very full");
}
}
Cette requêteTestTest() n'utilisera pas bien sûr la classe MockFatDude. Une façon je peux penser est de changer le code pour passer méthode FatDude à manger() de ClassA comme:
public class classA {
public String eat(FatDude dude) {
String result = dude.eatThemAll();
}
}
changer ensuite ma méthode de test:
public class DoTest {
public void runTest() {
classA cl = new ClassA();
String out = cl.eat(new MockFatDude());
assertEqual(out, "very full");
}
}
Mais comme vous pouvez le voir, je a dû changer le code source pour répondre à mes besoins. Est-ce la bonne façon de faire? Que faire si je ne suis pas autorisé à changer mon code source? Je sais si j'applique le concept TDD, il est OK de changer le code source mais j'aimerais entendre un avis ou un conseil si ce que j'ai montré ci-dessus est la bonne façon de faire.
Est-ce java ou C#? Quels outils utilisez-vous? S'il vous plaît, ajoutez des tags appropriés. Je vous remercie. –
@maksymko: Je ne pense pas que le langage ou les outils soient importants pour cette question, à part le fait que c'est un langage orienté objet. –
@calavera: je voulais juste le clarifier pour une catégorisation/filtrage plus approprié, et non comme un moyen d'aider à répondre à la question. –