Actualmente estoy en medio de refactorizar un método importante en un sistema heredado. Hubo una prueba casi nula hasta que comencé a trabajar en ella, y agregué bastante para garantizar el trabajo correcto después de mis refactorizaciones.
Ahora me he encontrado con la parte más crucial: el algoritmo que calcula un indicador. Es algo como
indicator = (OneNumberFromA + AnotherNumberFromB) / elapsedTime;
¿Cómo puedo probar el comportamiento correcto para esta función con las pruebas unitarias?
También hay algunos algoritmos ligeramente diferentes en las funciones, que el programa alcanza en algunos casos, pero en todos ellos, elapsedTime
es vital para el resultado.
System.currentTimeMillis()
con un métodoTime.now()
, que generalmente hace lo mismo, pero en la prueba se puede hacer para devolver cualquier valor que desee. Esto puede requerir cierto esfuerzo, pero no es probable que rompa nada, ya que es un cambio muy centrado y contenido.La medición del tiempo y la evaluación del indicador deben estar en diferentes funciones. En su caso,
elapsedTime
debe ser una entrada de la función de evaluación. De esa manera, su código de evaluación se puede probar y es más fácil de entender.Ahora todavía tiene el problema de probar la función de medición de tiempo, pero esto está más allá del alcance de esta pregunta.
fuente