2011-05-12 12 views
13

Parece que hay dos tendencias en este tema:¿Las pruebas unitarias usan el registro?

  1. Algunas respuestas (tales como this one) sugieren las pruebas unitarias no deben entrar nada.
  2. Algunas preguntas y respuestas (como this one) sugieren diferentes técnicas de registro y formatos utilizados en pruebas unitarias.

¿Las pruebas unitarias registran lo que hacen? ¿Sería útil esa información adicional en los informes de pruebas unitarias? ¿O deberían las pruebas unitarias permanecer en silencio mientras no fallen?

Mi pregunta se dirige a las pruebas de unidad de Java, pero la entrada de programadores en otros idiomas podría ser interesante también.

Respuesta

4

He utilizado el registro silencioso y detallado durante las pruebas unitarias, y personalmente lo prefiero cuando cada prueba muestra una sola línea con el nombre de la prueba y cómo fue. Me resulta más atractivo cuando puedo decir lo que está pasando, aunque no puedo decir que tenga un impacto real en mi trabajo.

Si se ejecuta desde la consola, la salida de color es un plus, creo.

+0

, es perfectamente posible registrar el resultado en una secuencia y los elementos de registro habituales en otra. –

7

Esto, obviamente, es un poco subjetivo, pero no veo por qué podría deshabilitar el registro en las pruebas de su unidad.

Creo que está malinterpretando la primera publicación vinculada; el cartel no dice que no debe registrar nada, está diciendo que un pase/falla no debe ser algo que esté solo en los registros. Debería devolverse al marco de prueba. Debe ser un dato que esté completamente separado de los registros normales.

Estoy de acuerdo con él en eso.

Aparte de eso, aún podría tener su registro normal. Lo tiene de todos modos en las clases que está probando (o debería tener). Cuando falla una prueba, es posible que vea algo en el registro que lo ayudará a depurarlo más rápidamente. No veo cómo esto podría ser un punto negativo.

+1

Además, no se olvide de los comentarios en sus afirmaciones. Si usa Junit, por ejemplo, entonces assertEquals (a, b) es peor que assertEquals ("Los valores a y b fueron incorrectos, bla bla", a, b). Cuando la prueba falla, esto agrega más valor a los informes/registros del marco de prueba –

3

Las pruebas de unidades realmente deberían ser tan simples y centradas, que una falla de prueba ya documenta lo que salió mal. No debería necesitar leer los registros de un caso de prueba para descubrirlo.

Sin embargo, que es una buena idea para registrar los resultados totales de una gran cantidad de pruebas automatizadas de modo que usted no tiene que buscar a través de todas las pruebas para encontrar los que fallaron. Es bueno ver un resumen al final en el que te puedas enfocar.

0

Un marco de registro es bastante inútil si no permite habilitar/deshabilitar los registros. Así que siéntase libre de agregar registros, solo asegúrese de que puede habilitarlos/deshabilitarlos separadamente de todo lo demás

1

Normalmente cuando escribe pruebas, una de las primeras cosas que aprende es que las pruebas de una unidad no deberían conectarse a nada: base de datos, sistema de archivos, internet. Una prueba de unidad debe ser extremadamente rápida y funcionar independientemente del entorno en el que trabaje. Si se conecta a algo, es una prueba de integración. Argumentaría que el uso de un marco de registro que puede reducir significativamente la velocidad de las pruebas unitarias es algo que va en contra de la filosofía de las pruebas unitarias. La idea es que puedes ejecutar miles, decenas de miles de pruebas en cada capricho. Lo ideal sería tener el conjunto de pruebas de la unidad conectado a su botón de guardar (no muy plausible, pero puede entender mi opinión).

Cuestiones relacionadas