Husky est un outil qui permet de gérer des hooks Git, c’est-à-dire des scripts qui s’exécutent automatiquement à certains moments du cycle de vie Git (comme pre-commit, post-checkout, etc.). Dans le contexte des projets .NET, Husky présente plusieurs intérêts :
Husky
1. Automatisation des tâches répétitives
Husky permet d’exécuter automatiquement des commandes importantes à chaque changement de branche, commit, ou push. Par exemple :
- Restaurer les outils locaux avec
dotnet tool restoreaprès ungit checkout. - Exécuter des tests unitaires avant un commit pour s’assurer que le code est stable.
- Analyser le code avec des outils comme
dotnet formatou en activant les analyseurs (RunAnalyzers=true) pendant la compilation ou les tests.
Cela garantit que les développeurs suivent les bonnes pratiques sans effort manuel.
2. Assurer la cohérence de l’environnement
En utilisant un hook comme post-checkout pour exécuter dotnet tool restore, Husky garantit que tous les outils locaux définis dans le fichier dotnet-tools.json sont installés et à jour. Cela évite les problèmes liés à des versions d’outils différentes entre les développeurs.
3. Faciliter la collaboration
Les hooks configurés avec Husky sont partagés avec le projet (via le dépôt Git). Ainsi, tous les membres de l’équipe bénéficient des mêmes automatisations, ce qui réduit les erreurs humaines et améliore la productivité.
4. Améliorer la qualité du code
Husky peut être utilisé pour exécuter des outils de qualité de code (comme des linters ou des analyseurs statiques) avant un commit ou un push. Cela empêche l’intégration de code non conforme dans le dépôt.
Pour exécuter des tests avec Husky dans un projet .NET, vous pouvez configurer un hook Git (comme pre-commit ou pre-push) pour lancer les tests automatiquement avant de permettre un commit ou un push. Voici les étapes détaillées :
Exécuter des tests avec Husky
1. Installer Husky comme outil local
Si ce n’est pas encore fait, installez Husky comme outil local dans votre projet :
dotnet new tool-manifest
dotnet tool install Husky --local
2. Configurer Husky
Initialisez Husky pour activer les hooks Git :
dotnet husky install
3. Ajouter un hook pour exécuter des tests rapides
Ajoutez un hook pre-commit pour exécuter des tests rapides (par exemple uniquement les tests unitaires) avant un commit :
dotnet husky add pre-commit -c "dotnet test"
Ce que fait ce hook :
- Avant chaque commit, Husky exécute la commande
dotnet testciblée sur les tests unitaires. - Si les tests échouent, le commit est annulé, empêchant ainsi l’intégration de code non valide.
Exemple de configuration complète
Ajouter un hook pre-push pour exécuter la suite de tests complète avant un push :
dotnet husky add pre-push -c "dotnet test"
Ajouter un hook pre-commit pour exécuter les tests avant un commit :
dotnet husky add pre-commit -c "dotnet test --no-build"
Note : Utiliser
--no-builddans le hookpre-commitpeut accélérer les tests si le projet est déjà compilé.
Personnalisation des tests
Vous pouvez personnaliser la commande dotnet test pour exécuter des tests spécifiques ou ajouter des options :
- Exécuter uniquement des tests d’un projet particulier :
dotnet husky add pre-commit -c "dotnet test ./MyProject.Tests/MyProject.Tests.csproj" - Exécuter des tests avec un filtre (par exemple, une catégorie spécifique) :
dotnet husky add pre-commit -c "dotnet test --filter Category=Unit" - Exécuter uniquement les tests d’architecture (par exemple marqués
Category=Architecture) avant un push :dotnet husky add pre-push -c "dotnet test --filter Category=Architecture"