Por lo que sé de eXtreme Programming y pruebas unitarias, los ensayos deben ser realizados por otro desarrollador antes de que otro desarrolle el método probado (o por los mismos desarrolladores, pero la prueba debe escribirse antes de la implementación del método).¿Para burlarse o no para burlarse?
Ok, parece bueno, solo tenemos que probar si un método tiene un buen comportamiento cuando le doy algunos parámetros.
Pero la diferencia entre la teoría y la práctica es que, en teoría, no hay pero en la práctica no existe ...
La primera vez que he intentado probar, he encontrado que es difícil en algunos casos debido a las relaciones entre los objetos. Descubrí la práctica de la burla y la encontré muy útil, pero algunos conceptos me hacen dudar.
Primero, burlarse implícito dice: "Ya sabes cómo funciona el método porque debes saber qué otros objetos necesita ...". Bueno, en teoría, ese es mi amigo Bob que escribe la prueba y simplemente sabe que el método debe volverse verdadero cuando le doy la cadena "john" ... Soy yo quien codifica este método usando un dao para acceder a una base de datos en lugar de usar un hashtable en la memoria ...
¿Cómo mi pobre amigo Bob va a escribir su prueba? Anticipará mi trabajo ...
Ok, parece que no es la teoría pura, pero no importa. Pero si miro la documentación de muchos frameworks simulados, me permiten probar cuántas veces se llama un método y en qué orden. ouch ...
Pero si mi amigo Bob debe probar este método así para asegurar el buen uso de las dependencias, el método debe escribirse antes de la prueba, ¿no es así?
Hum ... ayudar a mi amigo Bob ...
¿Cuándo dejamos de usar mecanismo de maqueta (verificación de pedidos, etc.)? Cuando los mecanismos simulados son útiles? Teoría, práctica y simulacro: ¿cuál es el mejor equilibrio?
Aún así, el hecho de que Bob necesite especificar qué es compatible con el método probado no se siente bien. De hecho, al especificar los contratos de los que habla, Bob definirá la implementación real de un método probado. Y ese no es su trabajo. El uso de interfaces realmente no resuelve el problema.[Komarro] (http://code.google.com/p/komarro/) intenta proporcionar algunas mejoras sobre este problema. Echar un vistazo... –