Recientemente se me ocurrió la siguiente convención para nombrar mis pruebas, sus clases y proyectos que contengan para maximizar sus descriptivos:
Digamos que estoy probando la Settings
clase en un proyecto en el MyApp.Serialization
espacio de nombres.
Primero crearé un proyecto de prueba con el MyApp.Serialization.Tests
espacio de nombres.
Dentro de este proyecto y, por supuesto, el espacio de nombres crearé una clase llamada IfSettings
(guardada como IfSettings.cs ).
Digamos que estoy probando el SaveStrings()
método. -> Voy a nombrar la prueba CanSaveStrings()
.
Cuando ejecuto esta prueba, mostrará el siguiente encabezado:
MyApp.Serialization.Tests.IfSettings.CanSaveStrings
Creo que esto me dice muy bien lo que está probando.
Por supuesto, es útil que en inglés el sustantivo "Tests" sea el mismo que el verbo "tests".
No hay límite para su creatividad al nombrar las pruebas, de modo que obtengamos títulos completos de las oraciones para ellas.
Por lo general, los nombres de las pruebas tendrán que comenzar con un verbo.
Ejemplos incluyen:
- Detecta (p
DetectsInvalidUserInput
. Ej. )
- Lanza (por ejemplo
ThrowsOnNotFound
)
- Will (por ejemplo
WillCloseTheDatabaseAfterTheTransaction
)
etc.
Otra opción es usar "eso" en lugar de "si".
Sin embargo, este último me ahorra pulsaciones de teclas y describe más exactamente lo que estoy haciendo, ya que no sé, que el comportamiento probado está presente, pero estoy probando si lo está.
[ Editar ]
Después de usar la convención de nomenclatura anterior durante un poco más de tiempo, descubrí que el prefijo If puede ser confuso cuando se trabaja con interfaces. Sucede que la clase de prueba IfSerializer.cs se parece mucho a la interfaz ISerializer.cs en la "pestaña Abrir archivos". Esto puede ser muy molesto cuando se alterna entre las pruebas, la clase que se está probando y su interfaz. Como resultado, ahora elegiría Eso sobre If como prefijo.
Además, ahora uso, solo para métodos en mis clases de prueba, ya que no se considera la mejor práctica en ningún otro lugar, la "_" para separar palabras en los nombres de mis métodos de prueba como en:
[Test] public void detects_invalid_User_Input()
Encuentro que esto es más fácil de leer.
[ Finalizar edición ]
Espero que esto genere algunas ideas más, ya que considero que nombrar las pruebas es de gran importancia, ya que puede ahorrarle mucho tiempo que de lo contrario se habría gastado tratando de comprender lo que están haciendo las pruebas (por ejemplo, después de reanudar un proyecto después de una pausa prolongada) .