Estoy tratando de entrar en la prueba de unidad para los aspectos positivos que presenta, y estoy tratando de escribir una prueba de unidad para una clase que escribí el otro día. (Sé que esto es lo opuesto a TDD, por favor tengan paciencia)Pregunta de prueba de PHPUnit: cómo probar la unidad en mi clase
Mi clase, Image
, se usa junto con algunos otros para la manipulación de imágenes.
Image
esencialmente envuelve un recurso de imagen GD y almacena datos junto con él. Por ejemplo, una instancia de Image
siempre contendrá su estado actual, es decir, su nueva anchura/altura si cambiar de tamaño, los datos originales de imagen, etc.
La clase Image
también contiene métodos para,
- Creación de sí mismo desde un archivo, datos de cadena o URL, por ejemplo
$image->loadFromPath()
- Creación de un nuevo recurso de imagen GD a partir de las propiedades de la instancia actual
Image
, p. para cambiar el tamaño de imagen para mantener la transparencia de fondo, etc. - Clonación del recurso de imagen GD para su uso en las clases de manipulación
Lo que estoy luchando con es la forma de unidad de prueba de esta clase correctamente con PHPUnit. He leído algo y tengo algunas ideas contradictorias sobre cómo abordarlo y no sé qué es lo correcto. Puedo,
- escribir una prueba para cada método de la clase. Leí en alguna parte que debería probar todos y cada uno de los métodos. Sin embargo, algunos de los métodos ejecutan otros (con razón también puedo agregar), entonces tienes una cadena de dependencia. Pero también leí que cada prueba de Unidad debería ser independiente de la otra. Entonces, ¿qué hago si este es el caso?
- Escriba cada prueba como una ruta de uso de la clase. También leí en alguna parte que cada prueba debería representar una ruta de ruta/uso que puede tomar con la clase. Por lo tanto, si cubre cada uso, finalmente obtendrá una cobertura de código completa.
Entonces, ¿cuál de estos es correcto, si corresponde?
¿Conoces la cobertura del código? OMI es más importante ejecutar cada línea de código al menos una vez en lugar de crear una prueba para cada método, lo que no siempre es necesario por la misma razón que usted mencionó. – Franz
+1 para ingresar a UnitTests – Gordon
Sé qué cobertura de código es sí, y que debe apuntar al 100%, que es que cada línea debe ejecutarse al menos una vez. ¿Es definitivamente mejor escribir el caso de prueba donde cada prueba es una acción que realiza su clase en lugar de que cada prueba sea para un método específico? –