Général
- Suivez les mêmes normes pour tous les tests.
- Soyez clair sur ce qu'est chaque état de test.
- Soyez précis sur le comportement attendu.
Exemples
1) MethodName_StateUnderTest_ExpectedBehavior
Public void Sum_NegativeNumberAs1stParam_ExceptionThrown()
Public void Sum_NegativeNumberAs2ndParam_ExceptionThrown ()
Public void Sum_simpleValues_Calculated ()
Source: Normes de dénomination pour les tests unitaires
2) Séparer chaque mot par un trait de soulignement
Public void Sum_Negative_Number_As_1st_Param_Exception_Thrown()
Public void Sum_Negative_Number_As_2nd_Param_Exception_Thrown ()
Public void Sum_Simple_Values_Calculated ()
Autre
- Terminer les noms de méthode avec Test
- Démarrer les noms de méthode avec le nom de classe
Réponses:
Je suis à peu près avec vous sur ce seul homme. Les conventions de dénomination que vous avez utilisées sont les suivantes:
De quoi avez-vous besoin de plus d'un nom de test?
Contrairement à la réponse de Ray, je ne pense pas que le préfixe Test soit nécessaire. C'est du code de test, nous le savons. Si vous devez le faire pour identifier le code, vous rencontrez des problèmes plus importants, votre code de test ne doit pas être mélangé avec votre code de production.
Quant à la longueur et à l'utilisation du trait de soulignement, son code de test , qui s'en soucie? Seuls vous et votre équipe le verrez, tant qu'il est lisible et clair sur ce que fait le test, continuez! :)
Cela dit, je suis encore assez nouveau pour tester et bloguer mes aventures avec ça :)
la source
Test
et le nom de votre classe. Si le nom de la classe et le nom de la classe de test sont identiques, nous devrons toujours faire une pause et lire le chemin de deux fichiersSearch Everywhere
(shift shift) ouFind a Class By Name
(CMD O). Je comprends qu'il sera différencié par la structure des dossiers ou la structure des modules, mais lorsque nous recherchons quelque chose, nous savons déjà ce que nous voulons rechercher. Par exemple, si je recherche un test, je veux limiter ma recherche àtest
puis rechercher le nom, plutôt que de rechercher le nom, puis filtrer le test manuellement par les yeux. C'est une petite distinction, mais il est beaucoup plus facile de «tester [nom de la classe]» et d'avoir un seul pop-up et de réduire la charge mentaleCela vaut également la peine d'être lu: Structuration des tests unitaires
par exemple
Et voici pourquoi:
J'aime aussi cette approche:
MethodName_StateUnderTest_ExpectedBehavior
Alors peut-être vous adapter à:
StateUnderTest_ExpectedBehavior
Parce que chaque test sera déjà dans une classe imbriquée
la source
J'ai tendance à utiliser la convention de
MethodName_DoesWhat_WhenTheseConditions
sorte par exemple:Cependant, ce que je vois beaucoup, c'est que le nom du test suive la structure de test unitaire de
Qui suit également la syntaxe BDD / Gherkin de:
qui serait de nommer le test à la manière de:
UnderTheseTestConditions_WhenIDoThis_ThenIGetThis
donc à votre exemple:
Cependant, je préfère de loin mettre le nom de la méthode en cours de test, car les tests peuvent ensuite être organisés par ordre alphabétique ou apparaître par ordre alphabétique dans la liste déroulante des membres de VisStudio, et tous les tests pour 1 méthode sont regroupés.
Dans tous les cas, j'aime séparer les principales sections du nom du test par des traits de soulignement, par opposition à chaque mot , car je pense que cela facilite la lecture et la compréhension du point du test.
En d'autres termes, j'aime:
Sum_ThrowsException_WhenNegativeNumberAs1stParam
mieux queSum_Throws_Exception_When_Negative_Number_As_1st_Param
.la source
Je nomme mes méthodes de test comme d'autres méthodes utilisant "PascalCasing" sans aucun soulignement ni séparateur. Je laisse le test postfix pour la méthode, car il n'ajoute aucune valeur. Le fait que la méthode soit une méthode de test est indiqué par l'attribut TestMethod .
Étant donné que chaque classe de test ne doit tester qu'une autre classe, je laisse le nom de la classe hors du nom de la méthode. Le nom de la classe qui contient les méthodes de test est nommé comme la classe sous test avec le suffixe "Tests".
Pour les méthodes qui testent les exceptions ou les actions qui ne sont pas possibles, je préfixe la méthode de test avec le mot Cannot .
Mes convictions de dénomination sont basées sur l'article "TDD Tips: Test Naming Conventions & Guidelines" de Bryan Cook. J'ai trouvé cet article très utile.
la source
Le premier ensemble de noms est plus lisible pour moi, car le CamelCasing sépare les mots et les barres inférieures séparent les parties du schéma de nommage.
J'ai également tendance à inclure "Test" quelque part, soit dans le nom de la fonction, soit dans l'espace de noms ou la classe qui l'entoure.
la source
Tant que vous suivez une seule pratique, cela n'a pas vraiment d'importance. Généralement, j'écris un test unitaire unique pour une méthode qui couvre toutes les variations d'une méthode (j'ai des méthodes simples;) puis j'écris des ensembles de tests plus complexes pour les méthodes qui en ont besoin. Ma structure de nommage est donc généralement testée (un maintien de JUnit 3).
la source
J'utilise un préfixe «T» pour tester les espaces de noms, les classes et les méthodes.
J'essaie d'être soigné et de créer des dossiers qui répliquent les espaces de noms, puis de créer un dossier de tests ou un projet séparé pour les tests et de répliquer la structure de production pour les tests de base:
Je peux facilement voir que quelque chose est un test, je sais exactement à quel code d'origine il se rapporte (si vous ne pouvez pas le résoudre, le test est de toute façon trop compliqué).
Cela ressemble à la convention de dénomination des interfaces, (je veux dire, vous ne vous confondez pas avec des choses commençant par «I», ni avec «T»).
Il est facile de compiler simplement avec ou sans les tests.
C'est bon en théorie de toute façon, et fonctionne plutôt bien pour les petits projets.
la source