11
votes

Longueur maximale pour les classes de test d'unité?

J'utilise Junit et la pratique standard d'avoir une classe XXXTEST pour chaque cours que je teste. Lorsque vous écrivez des tests aujourd'hui, j'ai remarqué que la classe de test était sur le point d'atteindre 10000 lignes.

Y a-t-il quelques meilleures pratiques relatives à la longueur maximale d'une classe de test unitaire? Devrais-je diviser la classe de test de mon unité en plusieurs classes?


0 commentaires

4 Réponses :


5
votes

Vos tests d'unité doivent être aussi verbeux que nécessaire pour atteindre le niveau de confiance dont vous avez besoin dans votre code.

Je dirais que si votre type de test est aussi long, c'est probablement parce que vous avez beaucoup de carrières de configuration / démonstration, ce qui pourrait indiquer que vous devez absréancer certains collaborateurs (par exemple, des interfaces d'utilisation et une moqueur), ou d'introduire un assistant de test. Méthodes pour refroidir la chaudière. Cela pourrait également indiquer que votre type fait trop, et a besoin de refactoring.

Si vous refacteur le type, vous verrez probablement le type de test correspondant aussi plus petit.


0 commentaires

1
votes

Je voudrais certainement diviser cela. Bien qu'il n'y ait aucune limite particulière, je commence à surveiller les abstractions / décompositions si mes classes dépassent quelques centaines de lignes.

Peut-être que ceci est un indicateur que votre classe sous test est elle-même trop grande et / ou peut-être faire trop de choses? Pouvez-vous casser cette classe de distance dans différents composants bien définis et autonomes?


2 commentaires

La classe sous test est grande - environ 1500 lignes. J'ai pensé au refactoring mais ce n'est pas simple, étant donné que la classe se produit.


Cela ressemble à une grande classe. Vous devriez probablement vous demander si la classe effectue une tâche clairement définie et (sinon) s'il doit fournir une façade sur d'autres classes pour effectuer cette situation.



4
votes

Cela dépend de la question de savoir s'il s'agit d'un indice que la classe sous test (coupée) fait trop. Si tel est le cas, la réponse évidente est de refroidir la coupe qui signifierait diviser la classe de test en conséquence. Sinon, le nombre de méthodes peut ne pas importer si le nombre de scénarios différents que vous souhaitez couvrir est celui grand.

Lignes 10K est un peu telle que la question suivante serait de savoir si vous pouvez refroidir le test pour créer des méthodes d'assistance privées pour nettoyer tout code répété, utiliser des mères d'objet ou une moqueur pour rester sur la duplication, etc. 'Re test de scénarios identiques, comme la somme de test () avec 1 + 1 et 2 + 2 et 3 + 3 où ils ne sont pas des cas de bord.


2 commentaires

Il existe un grand nombre de scénarios à tester dans ce cas. La classe de test a plus de 40 méthodes de test.


Normalement, la Convention est une classe d'essai pour une classe d'application, mais aucune règle n'est pas une règle contre les tests dans des classes de test distinctes. Certains pourraient dire que c'est une odeur, mais ce sera toujours votre appel.



1
votes

On dirait que vous devez être important d'une classe que vous essayez de tester. Votre test de l'unité doit se concentrer sur le test d'une seule classe et si cette classe a tellement de fonctionnalités qu'il a besoin d'un test d'unité de 10000 lignes, il doit être divisé. Généralement, si une classe s'approche de 200 lignes, vous devez le refroidir en plusieurs classes.


0 commentaires