Je suis assez nouveau sur TDD et j'ai des problèmes lors de la création de mon premier test avant le code d'implémentation. Sans aucun cadre pour le code d'implémentation, je suis libre d'écrire mon premier test comme je veux, mais il semble toujours être entaché par ma façon de penser Java / OO sur le problème.
Par exemple, dans mon Github ConwaysGameOfLifeExemple le premier test que j'ai écrit (rule1_zeroNeighbours), j'ai commencé par créer un objet GameOfLife qui n'avait pas encore été implémenté; a appelé une méthode set qui n'existait pas, une méthode step qui n'existait pas, une méthode get qui n'existait pas, puis a utilisé une assertion.
Les tests ont évolué au fur et à mesure que j'écrivais plus de tests et refactorisais, mais à l'origine, cela ressemblait à ceci:
@Test
public void rule1_zeroNeighbours()
{
GameOfLife gameOfLife = new GameOfLife();
gameOfLife.set(1, 1, true);
gameOfLife.step();
assertEquals(false, gameOfLife.get(1, 1));
}
Cela semblait étrange car je forçais la conception de l'implémentation en fonction de la façon dont j'avais décidé à ce stade précoce d'écrire ce premier test.
Dans la façon dont vous comprenez le TDD, est-ce correct? Je semble suivre les principes TDD / XP en ce que mes tests et implémentations ont évolué au fil du temps avec le refactoring, et donc si cette conception initiale s'était révélée inutile, elle aurait été ouverte à changement, mais j'ai l'impression de forcer une direction sur la solution en commençant de cette façon.
Sinon, comment les gens utilisent TDD? J'aurais pu passer par plus d'itérations de refactoring en commençant avec aucun objet GameOfLife, seulement des primitives et des méthodes statiques mais cela semble trop artificiel.