💻 Développement

dev-tdd-coach

Guide la pratique du Test-Driven Development pas à pas, avec exemples concrets, snippets copiables et anti-patterns.

⚡ Installation & lancement en 1 commande

Copiez-collez dans votre terminal : le skill s'installe dans ~/.claude/skills et Claude Code se lance directement dessus.

macOS / Linux
curl -fsSL https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.sh | sh -s -- dev-tdd-coach --launch
Windows (PowerShell)
iex "& { $(iwr -useb https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.ps1) } dev-tdd-coach -Launch"

🚀 Déjà installé ?

claude "/dev-tdd-coach"

Ou tapez /dev-tdd-coach dans une session Claude Code, ou décrivez simplement votre besoin — le skill se déclenche automatiquement via le skill-router.

🔑 Déclencheurs automatiques

Le skill s'active automatiquement quand votre demande contient :

TDDtest drivenred green refactorécrire le test d'abordBDDbehaviour drivenoutside-in TDD

📦 Installation manuelle

git clone https://github.com/khalilbenaz/claude-skills-collection.git cp -r claude-skills-collection/skills/dev-tdd-coach ~/.claude/skills/

Payload du plugin : skills/dev-tdd-coach · source éditable : dev-skills/tdd-coach

📖 Manuel

TDD Coach

Workflow RED → GREEN → REFACTOR

1. Décomposer la feature avant d'ouvrir l'IDE

Exemple — user story : "Un panier vide retourne un total de 0" → un seul test.


2. RED — Écrire un test qui échoue

Règles strictes :

// C# xUnit
[Fact]
public void GetTotal_WhenCartIsEmpty_ReturnsZero()
{
    var cart = new ShoppingCart();
    var total = cart.GetTotal();
    Assert.Equal(0, total);
}
# Python pytest
def test_get_total_returns_zero_for_empty_cart():
    cart = ShoppingCart()
    assert cart.get_total() == 0
// TypeScript Jest
it("returns 0 for an empty cart", () => {
  const cart = new ShoppingCart();
  expect(cart.getTotal()).toBe(0);
});

Lancer les tests → confirmer l'échec pour la bonne raison :

dotnet test          # .NET
pytest -v            # Python
npx jest --watch     # Node/TS

3. GREEN — Minimum viable pour passer le test

public class ShoppingCart
{
    public decimal GetTotal() => 0; // volontairement naïf
}

Lancer les tests → tous verts → committer :

git add -p && git commit -m "GREEN: GetTotal returns 0 for empty cart"

4. REFACTOR — Nettoyer sans casser

Checklist rapide :


5. Itérer — prochain comportement

# Historique propre : un commit par cycle
git log --oneline
# GREEN: GetTotal returns 0 for empty cart
# GREEN: GetTotal sums single item price
# GREEN: GetTotal sums multiple items
# REFACTOR: extract calculateItemTotal helper

Choisir son école : London vs Chicago

CritèreChicago (classique)London (mockiste)
DépendancesVraies instances / in-memoryMocks systématiques
FeedbackTeste le résultat finalTeste les interactions
RisqueCouplage au stateOver-specification des mocks
Convient pourLogique métier pure, DDDCouche applicative, CQRS

Heuristique : mocker uniquement les dépendances externes (I/O, base, API), jamais la logique interne.


Double-loop TDD (Outside-in)

[Acceptance test — BDD Gherkin]   ← boucle externe, toujours rouge
        ↓
  [Unit test RED]
        ↓
  [Unit test GREEN]
        ↓
  [Unit REFACTOR]
        ↓
[Acceptance test — vérifier progression]

Scenario Gherkin :

Feature: Shopping cart total
  Scenario: Empty cart
    Given an empty cart
    When I request the total
    Then the total is 0

  Scenario: Cart with items
    Given a cart with 2 items at 5.00 each
    When I request the total
    Then the total is 10.00

Tooling BDD :


Katas d'entraînement (ordre recommandé)

KataObjectifDurée estimée
FizzBuzzDémarrer le cycle, conditions15 min
String CalculatorCas progressifs, regex, parsing30 min
Roman NumeralsDécouverte de patterns par triangulation45 min
Bowling GameRefactoring agressif, logique complexe1h
Bank AccountState, CQRS simplifié, événements1h

Ressources : kata-log.rocks · cyber-dojo.org


Garde-fous & Anti-patterns

Anti-patterns fréquents

Anti-patternSymptômeCorrection
Test-afterTests écrits après le codeSupprimer le code, repartir en RED
Test trop largeUn test vérifie 5 comportementsUn comportement = un test
Mock everythingTests fragiles, cassent au moindre refactoringMocker uniquement les dépendances externes
Pas de REFACTORCode de prod naïf laissé en l'étatRefactorer obligatoirement avant le prochain RED
Tests privésTester les méthodes privées directementTester via l'interface publique
Trop de setupArrange de 40 lignesExtraire des builders/factories de test
Assert multipleAssert.Equal × 8 dans un testSéparer en autant de tests

Pièges courants


Bonnes pratiques 2026