35 votes

Comment éviter l'héritage dans les cas de test de JUnit ?

J'ai un certain nombre de cas de test dans JUnit. Tous ont besoin que le même code soit exécuté dans leur @BeforeClass méthode statique. C'est une duplication de code et j'essaie de m'en débarrasser. L'héritage est un moyen peu pratique de le faire. Existe-t-il d'autres mécanismes dans JUnit qui pourraient m'aider ?

PS. J'ai écrit ce billet de blog sur ce même sujet : http://www.yegor256.com/2015/05/25/unit-test-scaffolding.html

0voto

Ray Toal Points 35382

Si chaque classe doit avoir un @BeforeClass méthode annotée qui est exactement l'une à l'autre, l'héritage n'est pas perçu comme une que Je ne suis pas d'accord. Si chacune de ces méthodes d'initialisation partage simplement certains vous pourriez créer un code TestUtil avec un comportement partagé et faire des appels à ce comportement partagé à partir de chacune des classes de l @BeforeClass des méthodes.

0voto

Je pense que si les classes ont "is-a" l'héritage est raisonnable.

Si la classe de base est MyBeforeClass qui définit @BeforeClass et MyTestClass1 "is-a" MyBeforeClass , MyTestClass1 extends MyBeforeClass est OK.

0voto

James Kingsbery Points 3460

En fonction de la nature du code d'installation, vous pouvez potentiellement placer tous vos tests dans un test suite et que le code d'installation y soit exécuté. L'inconvénient est que vous ne pouvez pas exécuter les tests individuellement (puisque le test dépend du code d'installation).

-1voto

Michael Piefel Points 2007

Il est code de test Il n'est pas conçu pour une réutilisation intensive. Ne pas faire de l'ingénierie à outrance. N'appliquez pas tous les modèles de conception que vous connaissez. Pour les code de test Les règles sont différentes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X