Tengo una clase que encapsula los resultados de una medición científica. Estoy construyendo pruebas unitarias desde el principio, pero no tengo mucha experiencia con las pruebas unitarias y no estoy seguro de qué comportamientos debería probar y cómo.
Mi clase hace tres tipos de cosas:
- Lee datos de medición de un archivo (o una cadena) en sus variables de instancia
- Escribe sus datos de medición en un archivo o una cadena
- Realiza cálculos sobre sus datos (por ejemplo, obtener el promedio de un conjunto de números)
Mi enfoque en este momento es incluir un archivo de datos de ejemplo bien conocido en mi test
directorio. Una prueba lee los datos del archivo, los pasa a mi clase y se asegura de que cumplan con algunos controles básicos de cordura. Otra prueba pasa el nombre del archivo a mi clase, deja que la clase lo lea y ejecuta las mismas pruebas. El resto de las pruebas leen los datos del archivo, los pasan a mi clase y verifican que los resultados de los métodos de procesamiento de datos sean correctos, dado lo que sé sobre ese conjunto de datos.
Sin embargo, esto parece bastante enredado. Las pruebas que verifican (3) suponen implícitamente que los comportamientos de (1) son correctos, ya que son las funciones en (1) las que se utilizan para llenar la clase en primer lugar. Y las pruebas de (1) podrían beneficiarse de las extensas comprobaciones realizadas por las pruebas de (3). ¿Estoy estructurando mal mis pruebas unitarias, o es solo un resultado natural del hecho de que necesito usar un conjunto de datos específico en mis pruebas?
fuente