Skill de Génération de Tests Polyglotte
Un skill basé sur l'IA qui génère des tests unitaires complets et fonctionnels pour n'importe quel langage de programmation en utilisant un pipeline multi-agent coordonné.
Quand Utiliser Ce Skill
Utilisez ce skill quand vous avez besoin de :
- Générer des tests unitaires pour un projet entier ou des fichiers spécifiques
- Améliorer la couverture de tests pour des bases de code existantes
- Créer des fichiers de tests qui suivent les conventions du projet
- Écrire des tests qui se compilent et réussissent réellement
- Ajouter des tests pour de nouvelles fonctionnalités ou du code non testé
Fonctionnement
Ce skill coordonne plusieurs agents spécialisés dans un pipeline Research → Plan → Implement :
Aperçu du Pipeline
┌─────────────────────────────────────────────────────────────┐
│ TEST GENERATOR │
│ Coordinates the full pipeline and manages state │
└─────────────────────┬───────────────────────────────────────┘
│
┌─────────────┼─────────────┐
▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────────┐
│ RESEARCHER│ │ PLANNER │ │ IMPLEMENTER │
│ │ │ │ │ │
│ Analyzes │ │ Creates │ │ Writes tests │
│ codebase │→ │ phased │→ │ per phase │
│ │ │ plan │ │ │
└───────────┘ └───────────┘ └───────┬───────┘
│
┌─────────┬───────┼───────────┐
▼ ▼ ▼ ▼
┌─────────┐ ┌───────┐ ┌───────┐ ┌───────┐
│ BUILDER │ │TESTER │ │ FIXER │ │LINTER │
│ │ │ │ │ │ │ │
│ Compiles│ │ Runs │ │ Fixes │ │Formats│
│ code │ │ tests │ │ errors│ │ code │
└─────────┘ └───────┘ └───────┘ └───────┘
Instructions Étape par Étape
Étape 1 : Déterminer la Demande de l'Utilisateur
Assurez-vous de bien comprendre ce que l'utilisateur demande et quel est le périmètre. Quand l'utilisateur n'exprime pas de fortes exigences concernant le style de test, les objectifs de couverture ou les conventions, tirez les directives de unit-test-generation.prompt.md. Ce prompt fournit les meilleures pratiques pour découvrir les conventions, les stratégies de paramétrisation, les objectifs de couverture (viser 80 %) et les motifs spécifiques aux langages.
Étape 2 : Invoquer le Générateur de Tests
Commencez par appeler l'agent polyglot-test-generator avec votre demande de génération de tests :
Generate unit tests for [path or description of what to test], following the [unit-test-generation.prompt.md](unit-test-generation.prompt.md) guidelines
Le Générateur de Tests gère automatiquement l'ensemble du pipeline.
Étape 3 : Phase de Recherche (Automatique)
L'agent polyglot-test-researcher analyse votre base de code pour comprendre :
- Langage & Framework : Détecte C#, TypeScript, Python, Go, Rust, Java, etc.
- Framework de Test : Identifie MSTest, xUnit, Jest, pytest, go test, etc.
- Structure du Projet : Mappe les fichiers sources, les tests existants et les dépendances
- Commandes de Build : Découvre comment construire et tester le projet
Résultat : .testagent/research.md
Étape 4 : Phase de Planification (Automatique)
L'agent polyglot-test-planner crée un plan d'implémentation structuré :
- Regroupe les fichiers en phases logiques (2-5 phases typiquement)
- Priorise par complexité et dépendances
- Spécifie les cas de test pour chaque fichier
- Définit les critères de succès par phase
Résultat : .testagent/plan.md
Étape 5 : Phase d'Implémentation (Automatique)
L'agent polyglot-test-implementer exécute chaque phase séquentiellement :
- Lire les fichiers source pour comprendre l'API
- Écrire les fichiers de tests en suivant les motifs du projet
- Construire en utilisant le sous-agent
polyglot-test-builderpour vérifier la compilation - Tester en utilisant le sous-agent
polyglot-test-testerpour vérifier que les tests passent - Corriger en utilisant le sous-agent
polyglot-test-fixersi des erreurs surviennent - Linter en utilisant le sous-agent
polyglot-test-linterpour le formatage du code
Chaque phase se termine avant que la suivante ne commence, assurant une progression incrémentale.
Types de Couverture
- Chemin heureux : Les entrées valides produisent les résultats attendus
- Cas limites : Valeurs vides, limites, caractères spéciaux
- Cas d'erreur : Entrées invalides, gestion des valeurs null, exceptions
Gestion d'État
Tout l'état du pipeline est stocké dans le dossier .testagent/ :
| Fichier | Objectif |
|---|---|
.testagent/research.md |
Résultats de l'analyse de la base de code |
.testagent/plan.md |
Plan d'implémentation par phases |
.testagent/status.md |
Suivi de la progression (optionnel) |
Exemples
Exemple 1 : Tests de Projet Complet
Generate unit tests for my Calculator project at C:\src\Calculator
Exemple 2 : Tests de Fichier Spécifique
Generate unit tests for src/services/UserService.ts
Exemple 3 : Couverture Ciblée
Add tests for the authentication module with focus on edge cases
Référence des Agents
| Agent | Objectif | Outils |
|---|---|---|
polyglot-test-generator |
Coordonne le pipeline | runCommands, codebase, editFiles, search, runSubagent |
polyglot-test-researcher |
Analyse la base de code | runCommands, codebase, editFiles, search, fetch, runSubagent |
polyglot-test-planner |
Crée le plan de tests | codebase, editFiles, search, runSubagent |
polyglot-test-implementer |
Écrit les fichiers de tests | runCommands, codebase, editFiles, search, runSubagent |
polyglot-test-builder |
Compile le code | runCommands, codebase, search |
polyglot-test-tester |
Exécute les tests | runCommands, codebase, search |
polyglot-test-fixer |
Corrige les erreurs | runCommands, codebase, editFiles, search |
polyglot-test-linter |
Formate le code | runCommands, codebase, search |
Prérequis
- Le projet doit avoir un système de build/test configuré
- Le framework de test doit être installé (ou installable)
- VS Code avec l'extension GitHub Copilot
Dépannage
Les tests ne se compilent pas
L'agent polyglot-test-fixer tentera de résoudre les erreurs de compilation. Vérifiez .testagent/plan.md pour la structure attendue des tests.
Les tests échouent
Examinez la sortie des tests et ajustez les attentes des tests. Certains tests peuvent nécessiter un mock des dépendances.
Mauvais framework de test détecté
Spécifiez votre framework préféré dans la demande initiale : "Generate Jest tests for..."