He estado escuchando sobre el estilo de Londres frente al estilo de Chicago (a veces llamado estilo de Detroit) de Test Driven Development (TDD).
Taller del grupo de usuarios de Utah Extreme Programming:
El estilo de interacción TDD también se llama estilo burlón o estilo londinense después del club Extreme Tuesday de Londres, donde se hizo popular. Suele contrastarse con el TDD clásico o al estilo de Detroit, que se basa más en el estado.
El taller cubre tanto la escuela de TDD de Chicago (pruebas de comportamiento y triangulación basadas en el estado) como la escuela de Londres , que se enfoca más en las pruebas de interacción, burlas y TDD de extremo a extremo, con énfasis particular en el diseño basado en la responsabilidad y el Enfoque Tell, Don't Ask para OO recientemente re-popularizado por el excelente libro Crecimiento orientado a objetos de Steve Freeman y Nat Pryce Libro guiado por pruebas .
¿El post TDD clásico o "London School"? Jason Gorman fue útil, pero sus ejemplos me confundieron, porque usa dos ejemplos diferentes en lugar de uno con ambos enfoques. ¿Cuáles son las diferencias? ¿Cuándo usas cada estilo?
Calculator
regresamultiply
, verá que dos pruebas fallan: la prueba del libro mayor y la prueba de la calculadora, pero solo una prueba falla si se burla de la calculadora. Eso podría facilitar la localización del origen del error, especialmente si el sistema es complejo.El artículo Las burlas no son trozos , de Martin Fowler, es una buena introducción al tema.
Dependiendo del estilo de diseño que elija (y los principios de diseño sobre los cuales construye sus programas), existen al menos dos formas de ver un objeto:
En el primer caso, está interesado en lo que sale del procesamiento o en qué estado queda el objeto después de ese procesamiento. Aquí es donde los métodos como
assertEquals()
ingresar la imagen. En este caso, no importa mucho qué otros objetos estuvieron involucrados en el procesamiento, qué métodos se llamaron, etc. Este tipo de verificación se llama verificación basada en estado y es el estilo "clásico".En el segundo caso, dado que la mayoría de los objetos ni siquiera devuelven ningún resultado (por ejemplo,
void
métodos en Java), está más interesado en cómo los objetos se comunican entre sí y si pasan los mensajes correctos en las circunstancias impuestas por la prueba. Estas interacciones generalmente se verifican con la ayuda de marcos simulados. Este tipo de verificación se denomina verificación basada en el comportamiento o en la interacción. Una de sus implicaciones es la técnica llamada Behavior Driven Development, mediante la cual se desarrolla una clase suponiendo que sus colaboradores ya existen (aunque todavía no existan), por lo que puede codificar contra sus interfaces.Tenga en cuenta que esta no es una opción o una opción. Puede tener un estilo de diseño que combine ambos enfoques para obtener lo mejor de cada uno.
fuente