J'ai entendu parler du style TDD (Test Driven Development) de Londres contre Chicago (parfois appelé style de Detroit).
Atelier du groupe d'utilisateurs de programmation extrême d'Utah:
Le TDD de style interaction est aussi appelé style mockist , ou style londonien après le club londonien Extreme Tuesday où il est devenu populaire. Cela contraste généralement avec le TDD classique ou de style Detroit, qui est davantage basé sur les états.
L’atelier couvre à la fois l’ école TDD de Chicago (tests de comportement et triangulation) et l’ école de Londres , qui se concentre plus sur les tests d’interaction, les moqueries et la TDD de bout en bout, avec un accent particulier sur la conception axée sur la responsabilité et la L' approche de Tell, Don't Ask à OO a été récemment popularisée à nouveau par l'excellent livre Guided By Tests de Steve Freeman et Nat Pryce .
Le post classique TDD ou "London School"? par Jason Gorman a été utile, mais ses exemples m'ont confondu, car il utilise deux exemples différents au lieu d'un exemple avec les deux approches. Quelles sont les différences? Quand utilisez-vous chaque style?
Calculator
régression s’effectuemultiply
, deux tests échouent: le test du grand livre et le test de la calculatrice, mais un seul test échoue si vous simulez la calculatrice. Cela pourrait faciliter la localisation de l'origine du bogue, surtout si le système est complexe.L'article de Mock Art Stubs , de Martin Fowler, est une bonne introduction au sujet.
Selon le style de conception que vous choisissez (et les principes de conception sur lesquels vous construisez vos programmes), il existe au moins deux façons de voir un objet:
Dans le premier cas, vous êtes intéressé par ce qui sort du traitement ou dans quel état l'objet est laissé après ce traitement. C'est ici que des méthodes telles que
assertEquals()
saisir l'image. Dans ce cas, peu importe quels autres objets ont été impliqués dans le traitement, quelles méthodes ont été appelées, etc. Ce type de vérification est appelé vérification basée sur l'état et correspond au style "classique".Dans le second cas, étant donné que la plupart des objets ne renvoient même pas de résultat (par exemple, des
void
méthodes en Java), vous êtes plus intéressé par la façon dont les objets communiquent et par lesquels ils transmettent les bons messages dans les circonstances imposées par le test. Ces interactions sont généralement vérifiées à l'aide de faux cadres. Ce type de vérification s'appelle vérification basée sur le comportement ou basée sur l'interaction. L'une de ses implications est la technique appelée Behavior Driven Development, qui permet de développer une classe en supposant que ses collaborateurs existent déjà (même s'ils n'existent pas encore), ce qui vous permet de coder leurs interfaces.Notez que ce n'est pas un choix /. Vous pouvez avoir un style qui associe les deux approches pour tirer le meilleur parti de chacune d’elles.
la source