La mayoría de las respuestas aquí parecen abordar las mejores prácticas de pruebas unitarias en general (cuándo, dónde, por qué y qué), en lugar de escribir las pruebas en sí mismas (cómo). Dado que la pregunta parecía bastante específica en la parte "cómo", pensé en publicar esto, tomado de una presentación de "bolsa marrón" que realicé en mi empresa.
Las 5 leyes de las pruebas de escritura de Womp:
1. Utilice nombres de métodos de prueba largos y descriptivos.
- Map_DefaultConstructorShouldCreateEmptyGisMap()
- ShouldAlwaysDelegateXMLCorrectlyToTheCustomHandlers()
- Dog_Object_Should_Eat_Homework_Object_When_Hungry()
2. Escriba sus pruebas en un estilo Organizar / Actuar / Afirmar .
- Si bien esta estrategia organizacional ha existido por un tiempo y se ha llamado muchas cosas, la introducción del acrónimo "AAA" recientemente ha sido una excelente manera de transmitir esto. Hacer que todas sus pruebas sean coherentes con el estilo AAA las hace fáciles de leer y mantener.
3. Siempre proporcione un mensaje de error con sus afirmaciones.
Assert.That(x == 2 && y == 2, "An incorrect number of begin/end element
processing events was raised by the XElementSerializer");
- Una práctica simple pero gratificante que hace evidente en su aplicación de corredor lo que ha fallado. Si no proporciona un mensaje, generalmente obtendrá algo como "Se esperaba verdadero, era falso" en su salida de falla, lo que hace que tenga que leer la prueba para averiguar qué está mal.
4. Comente el motivo de la prueba : ¿cuál es el supuesto empresarial?
/// A layer cannot be constructed with a null gisLayer, as every function
/// in the Layer class assumes that a valid gisLayer is present.
[Test]
public void ShouldNotAllowConstructionWithANullGisLayer()
{
}
- Esto puede parecer obvio, pero esta práctica protegerá la integridad de sus pruebas de personas que no comprenden la razón detrás de la prueba en primer lugar. He visto eliminar o modificar muchas pruebas que estaban perfectamente bien, simplemente porque la persona no entendía las suposiciones que la prueba estaba verificando.
- Si la prueba es trivial o el nombre del método es suficientemente descriptivo, puede permitirse dejar el comentario.
5. Cada prueba siempre debe revertir el estado de cualquier recurso que toque.
- Utilice simulacros siempre que sea posible para evitar tratar con recursos reales.
- La limpieza debe realizarse a nivel de prueba. Las pruebas no deben depender del orden de ejecución.