Historia del asunto:
El patrón Arrange-Act-Assert (AAA) fue propuesto para simplificar la estructura de las pruebas y aumentar su legibilidad. Se utiliza activamente en los frameworks de prueba modernos y es el estándar de facto al escribir pruebas automáticas de cualquier tipo.
Problema:
Sin una estructura clara, los casos de prueba se vuelven pesados, difíciles de leer y complicados de mantener. Se genera confusión entre la preparación de datos, la invocación del comportamiento a probar y la verificación del resultado. Esto conduce a la acumulación de deuda técnica y errores en las pruebas.
Solución:
Adherirse estrictamente al patrón AAA al escribir la prueba.
Características clave:
¿Se puede romper la secuencia de AAA si la prueba parece obvia?
Generalmente no. Cualquier desviación de la estructura AAA reduce la legibilidad de la prueba para otros desarrolladores y la hace vulnerable a errores en el mantenimiento.
¿Es aceptable combinar Act y Assert en una misma expresión para pruebas cortas?
Es mejor evitarlo, ya que dificulta la comprensión y posible expansión de la prueba en el futuro.
¿Se debe incluir la lógica de limpieza de datos (cleanup) en la etapa de Arrange?
No. La limpieza o Teardown generalmente se implementa en métodos separados, por ejemplo, en los hooks del framework de pruebas (After, AfterEach).
Una prueba que añade un registro a la base de datos primero realiza una verificación y solo después lo añade. Un aserto aleatorio interrumpe el flujo.
Ventajas:
Desventajas:
La prueba comienza con la limpieza de datos, luego se añade un registro y solo después se verifica el resultado, siguiendo estrictamente la AAA.
Ventajas:
Desventajas: