Comment corriger les échecs de tests Apex et les erreurs de couverture de code dans les déploiements Salesforce
Les déploiements en production exigent des tests Apex réussis et au moins 75% de couverture de code, et Salesforce bloque la release tant que ces deux conditions ne sont pas remplies.
Se produit lors de : un déploiement en production ou un rafraîchissement complet de sandboxCe que cela signifie
Salesforce exige que les déploiements en production exécutent les tests Apex et atteignent une couverture de code moyenne d'au moins 75% sur l'ensemble des classes et des triggers, chaque trigger devant présenter une couverture minimale. Un déploiement échoue, en listant l'assertion ou l'exception de chaque test en échec, dès qu'un test lève une exception non gérée, qu'une assertion échoue, ou que la couverture moyenne de l'org descend sous ce seuil.
Cette exigence ne s'applique qu'aux déploiements en production et en sandbox complète avec RunLocalTests ou RunAllTestsInOrg ; les déploiements vers des sandbox Developer ou des scratch orgs avec NoTestRun s'en affranchissent totalement, ce qui explique précisément pourquoi les lacunes de couverture passent inaperçues jusqu'au jour de la release.
Causes courantes
La solution
- Reproduisez d'abord l'échec en localExécutez la suite de tests locale complète avec couverture sur votre sandbox avant de toucher au code, afin de déboguer le véritable échec et non un log de déploiement obsolète.
sf apex run test --test-level RunLocalTests --code-coverage --result-format human --wait 20 - Écrivez des tests pour tout nouveau code avant de déployerAjoutez des méthodes de test qui exercent les nouvelles classes et triggers afin que la couverture moyenne de l'org dépasse 75% avant la release.
- Rendez les tests autonomesRéécrivez les tests pour qu'ils créent leurs propres données de test avec @TestSetup ou Test.startTest(), plutôt que de dépendre d'enregistrements qui existent par hasard dans l'org cible.
Comment Serpent évite cela
L'extension VS Code de Serpent affiche les résultats de tests et la couverture directement sur la tâche, afin qu'une lacune de couverture ou une assertion en échec soit visible avant la soumission de la tâche, et non découverte lors d'un déploiement en production. Voir la bibliothèque des erreurs de déploiement Salesforce.
Prévention
Erreurs associées
APEX TEST FAILURES, les réponses
Commencez gratuitement. Sans carte bancaire, sans installation, sans engagement.
Configuration en moins de 15 minutes. Aucune embauche DevOps nécessaire.
