Cuando realizo pruebas unitarias, a menudo me encuentro debatiendo la cantidad de datos con los que me alimento, y espero volver de mis unidades bajo prueba, debo incluirlos en los archivos de prueba reales.
La compensación con la que lucho constantemente es:
- Si una gran parte de la prueba (en el volumen del código) consta de datos de entrada y salida, parece difícil leer la prueba, pero puedo ver fácilmente las entradas y salidas reales.
- Si cargo los datos de prueba de los archivos, puedo probar fácilmente un montón de variaciones sobre la posible entrada de datos, reutilizar fácilmente los datos de prueba para múltiples pruebas, pero tengo que dejar el código fuente para ver otro archivo para ver exactamente cuáles son las entradas .
¿Alguno de estos es un antipatrón?
unit-testing
anti-patterns
unit-test-data
DudeOnRock
fuente
fuente
Respuestas:
Para responder a su pregunta directamente, no, tampoco creo que sea un antipatrón cuando se usa correctamente.
--- Respuesta más detallada ---
Desde mi experiencia, creo que esto depende en gran medida del objetivo de su prueba. Esta es la regla general que he usado en el pasado y me ayudó a decidir:
¿Realmente estás probando una pequeña unidad de código? (Una verdadera prueba unitaria)
En caso afirmativo, he descubierto que es mucho más fácil crear los datos dentro de la prueba en sí misma exactamente porque puedo ver lo que se está pasando. En estos casos, generalmente buscaré una biblioteca similar a Jasmine para usar porque encuentro que facilita la creación y el mantenimiento de los datos de prueba. Sin embargo, esa es una preferencia personal: use lo que haga que su trabajo sea más fácil.
Si no, entonces probablemente esté probando el sistema en sí. En estos casos, a menudo cargo datos de una fuente externa, las razones aquí son:
Tan larga respuesta corta, depende de lo que esté probando y por qué. Ambos enfoques son útiles y tienen su lugar: elija lo que funcione mejor para su situación.
fuente
No veo una compensación aquí. Se supone que el código fuente describe algoritmos, o al menos la lógica de negocios, no grandes cantidades de datos. Si escribe una transformación de Fourier, desea verificar que un tono sinusal esté correctamente asignado a un solo pico, un sonido mixto a más picos, etc., pero para eso es completamente suficiente alimentar un archivo nombrado
sinus.wav
en la rutina y verificar que La estructura de salida es lo que espera.Claro, técnicamente no tienes una garantía inmediata que
sinus.wav
realmente contenga un tono sinusal, pero como dijiste, enumerar los 100,000 valores de amplitud en la fuente tampoco te da eso, de hecho, es peor , porque al menos puede reproducir un archivo externo con un reproductor de audio para verificar, mientras que los valores de datos enterrados en el código fuente son esencialmente imposibles de hacer.fuente