2017-05-01 4 views
0

Considérez que je suis utiliser TDD dans une bonne façontests unitaires tests de duplication de code, comment les gérer

J'ai une classe Une classe et ATest pour elle. J'ai besoin de classe B qui est à peu près la même que la classe A , et ma décision est d'utiliser classe abstraite - Alphabet, et déplacer les fonctions de la Chambre des communes pour A et B à cette classe. En ce moment, je n'ai pas de tests pour Alphabet classe abstraite parce que j'ai correctement testé toutes les fonctions une classe et les soulever pour abstrait, tout bon et fonctionne de manière TDD. Mais en ce moment j'ai des tests qui couvre non seulement Une partie de la fonctionnalité dans ATest mais aussi un cas de test spécifiques Alphabet, dois-je reproduire que les cas dans B classe, C, D et etc. ?

Où dois-je mettre ces cas de test dans votre opinion?

+0

'je besoin de classe B qui est presque la même que la classe A' quelque chose de mal là-bas –

Répondre

0

Ma solution à votre question: vous implémentez un Testingclass concret qui étend votre Alphabet. Avec cette classe de test maintenant vous avez la possibilité d'écrire des tests, qui vous expliquent explicitement abstraite. Un seul indice: Votre classe de test de béton ne devrait être disponible que dans votre structure de test-packages.

Et pour votre autre classe comme A, B etc, vous pouvez maintenant écrire des tests, qui teste explicitement cette mise en œuvre de A, B etc. et vous ne devez pas tester explicitement la abstractclass plus.

Meilleures salutations Andrée

0

Vous devez déplacer les tests couvrant la fonctionnalité Alphabet vers la classe AlphabetTest et les supprimer de ATest.

Je recommande que lorsque vous testez Alphabet, vous créez un enfant et remplace toutes les fonctionnalités factices de vos méthodes abstraites.

0

Déplacer les essais qui couvrent le code de Alphabet dans une classe abstraite AlphabetTest.

Maintenant, ATest, BTest (et ainsi de suite) doivent étendre AlphabetTest.

Exécutez les tests et vous verrez que les tests de AlphabetTest sont exécutés pour ATest, BTest (et ainsi de suite)