Di recente ho escogitato la seguente convenzione per nominare i miei test, le loro classi e contenere i progetti al fine di massimizzarne le descrizioni:
Diciamo che sto testando la Settings
classe in un progetto nello MyApp.Serialization
spazio dei nomi.
Per prima cosa creerò un progetto di test con lo MyApp.Serialization.Tests
spazio dei nomi.
All'interno di questo progetto e ovviamente lo spazio dei nomi creerò una classe chiamata IfSettings
(salvata come IfSettings.cs ).
Diciamo che sto testando il SaveStrings()
metodo. -> Chiamerò il test CanSaveStrings()
.
Quando eseguo questo test mostrerà la seguente intestazione:
MyApp.Serialization.Tests.IfSettings.CanSaveStrings
Penso che questo mi dica molto bene, cosa sta testando.
Naturalmente è utile che in inglese il nome "Test" sia lo stesso del verbo "test".
Non c'è limite alla tua creatività nel nominare i test, in modo da ottenere titoli completi per loro.
Di solito i nomi dei test dovranno iniziare con un verbo.
Esempi inclusi:
- Rileva (ad es.
DetectsInvalidUserInput
)
- Lancia (es.
ThrowsOnNotFound
)
- Volontà (ad es.
WillCloseTheDatabaseAfterTheTransaction
)
eccetera.
Un'altra opzione è quella di utilizzare "that" invece di "if".
Quest'ultimo però mi salva la pressione dei tasti e descrive più esattamente cosa sto facendo, poiché non lo so, che il comportamento testato è presente, ma sto testando se lo è.
[ Modifica ]
Dopo aver usato la convenzione di denominazione sopra per un po 'di più, ho scoperto che il prefisso If può essere fonte di confusione, quando si lavora con le interfacce. Accade semplicemente che la classe di test IfSerializer.cs sia molto simile all'interfaccia ISerializer.cs nella "Scheda File aperti". Questo può diventare molto fastidioso quando si passa avanti e indietro tra i test, la classe in fase di test e la sua interfaccia. Di conseguenza ora sceglierei Quello su Se come prefisso.
Inoltre ora uso - solo per i metodi nelle mie classi di test in quanto non è considerata la migliore pratica altrove - il "_" per separare le parole nei nomi dei miei metodi di prova come in:
[Test] public void detects_invalid_User_Input()
Trovo che sia più facile da leggere.
[ Fine modifica ]
Spero che questo generi altre idee, dal momento che considero test di denominazione di grande importanza in quanto può farti risparmiare un sacco di tempo che altrimenti sarebbe stato speso cercando di capire cosa stanno facendo i test (ad esempio dopo aver ripreso un progetto dopo una pausa prolungata) .