J'ai récemment trouvé la convention suivante pour nommer mes tests, leurs classes et contenir des projets afin de maximiser leurs descriptifs:
Disons que je teste la Settings
classe dans un projet dans l' MyApp.Serialization
espace de noms.
Je vais d'abord créer un projet de test avec l' MyApp.Serialization.Tests
espace de noms.
Dans ce projet et bien sûr l'espace de noms, je vais créer une classe appelée IfSettings
(enregistrée sous IfSettings.cs ).
Disons que je teste la SaveStrings()
méthode. -> Je nommerai le test CanSaveStrings()
.
Lorsque je lance ce test, il affiche l'en-tête suivant:
MyApp.Serialization.Tests.IfSettings.CanSaveStrings
Je pense que cela me dit très bien ce qu'il teste.
Bien sûr, il est utile qu'en anglais le nom "Tests" soit le même que le verbe "tests".
Il n'y a pas de limite à votre créativité pour nommer les tests, de sorte que nous obtenons des titres de phrases complets pour eux.
Habituellement, les noms de test devront commencer par un verbe.
Les exemples comprennent:
- Détecte (par exemple
DetectsInvalidUserInput
)
- Jets (par exemple
ThrowsOnNotFound
)
- Will (par exemple
WillCloseTheDatabaseAfterTheTransaction
)
etc.
Une autre option consiste à utiliser "cela" au lieu de "si".
Ce dernier me permet d'économiser des touches et décrit plus exactement ce que je fais, car je ne sais pas, que le comportement testé est présent, mais je teste s'il l'est.
[ Modifier ]
Après avoir utilisé la convention de dénomination ci-dessus pendant un peu plus longtemps maintenant, j'ai constaté que le préfixe If peut prêter à confusion lorsque vous travaillez avec des interfaces. Il se trouve que la classe de test IfSerializer.cs ressemble beaucoup à l'interface ISerializer.cs dans "Open Files Tab". Cela peut devenir très ennuyeux lors de la commutation entre les tests, la classe testée et son interface. En conséquence, je choisirais maintenant That plutôt que If comme préfixe.
De plus, j'utilise maintenant - uniquement pour les méthodes de mes classes de test car cela n'est pas considéré comme la meilleure pratique ailleurs - le "_" pour séparer les mots dans mes noms de méthode de test comme dans:
[Test] public void detects_invalid_User_Input()
Je trouve cela plus facile à lire.
[ Fin de l'édition ]
J'espère que cela donnera naissance à plus d'idées, car je considère que nommer les tests est très important car cela peut vous faire économiser beaucoup de temps qui aurait autrement été consacré à essayer de comprendre ce que font les tests (par exemple, après la reprise d'un projet après une interruption prolongée) .