Utilisation de Test Classes et couverture de code dans Salesforce
Objectifs
- Comprendre l’importance des tests Apex et de la couverture de code.
- Apprendre à écrire des classes de test Apex.
- Apprendre à exécuter des tests et vérifier la couverture de code.
- Découvrir les meilleures pratiques pour les tests Apex.
Prérequis
- Un compte Salesforce. Vous pouvez en créer un gratuitement sur Salesforce Developer.
- Connexion à votre compte Salesforce.
- Connaissance de base du langage Apex.
1. Introduction aux tests Apex et à la couverture de code
Les tests Apex sont cruciaux pour garantir que votre code fonctionne comme prévu et pour maintenir la qualité du code. Salesforce exige qu’au moins 75% du code soit couvert par des tests avant de déployer des Apex Classes et des triggers en production.
Avantages des tests Apex :
- Fiabilité : Garantit que les modifications n’introduisent pas de bugs.
- Maintenabilité : Facilite la compréhension du code et la détection des problèmes.
- Conformité : Respect des exigences de déploiement Salesforce.
2. Écriture d’une classe de test Apex
Exemple : Test d’une classe de service simple
Supposons que vous avez une classe de service AccountService
qui met à jour les descriptions des comptes.
Classe Apex à tester (AccountService
) :
public class AccountService {
public static void updateAccountDescriptions(List<Account> accounts) {
for (Account acc : accounts) {
acc.Description = 'Updated description for ' + acc.Name;
}
update accounts;
}
}
Classe de test (AccountServiceTest
) :
- Créer une classe de test :
- Dans Setup, tapez “Apex Classes” dans la barre de recherche rapide et sélectionnez Apex Classes.
- Cliquez sur New pour créer une nouvelle classe Apex.
- Nom de la classe :
AccountServiceTest
- Code de la classe :
@isTest
public class AccountServiceTest {
@isTest
static void testUpdateAccountDescriptions() {
// Création de données de test
Account testAccount = new Account(Name = 'Test Account');
insert testAccount;
// Récupération des comptes pour mise à jour
List<Account> accountsToUpdate = [SELECT Id, Name, Description FROM Account WHERE Id = :testAccount.Id];
// Appel de la méthode de service
AccountService.updateAccountDescriptions(accountsToUpdate);
// Vérification des résultats
Account updatedAccount = [SELECT Id, Name, Description FROM Account WHERE Id = :testAccount.Id];
System.assertEquals('Updated description for Test Account', updatedAccount.Description);
}
}
- Enregistrer la classe : Cliquez sur Save.
3. Exécution des tests et vérification de la couverture de code
Étape 1 : Exécuter les tests Apex
- Accéder à l’exécution des tests Apex :
- Dans Setup, tapez “Apex Test Execution” dans la barre de recherche rapide et sélectionnez Apex Test Execution.
- Cliquez sur Select Tests.
- Sélectionnez
AccountServiceTest
et cliquez sur Run.
- Vérifier les résultats des tests :
- Une fois les tests exécutés, consultez les résultats pour vérifier si tous les tests ont réussi.
- Cliquez sur un test pour voir les détails des assertions et des erreurs éventuelles.
Étape 2 : Vérification de la couverture de code
- Accéder à la couverture de code Apex :
- Dans Setup, tapez “Apex Classes” dans la barre de recherche rapide et sélectionnez Apex Classes.
- Recherchez
AccountService
dans la liste et cliquez sur le nom de la classe. - La page de détails de la classe affiche la couverture de code en pourcentage. Cliquez sur Code Coverage pour voir les lignes couvertes en vert et les lignes non couvertes en rouge.
4. Meilleures pratiques pour les tests Apex
- Isolation des tests : Utilisez des données de test spécifiques créées dans chaque méthode de test pour éviter les interférences entre les tests.
- Utilisation de la méthode
@testSetup
: Pour configurer les données de test communes à plusieurs méthodes de test. - Assertions : Utilisez des assertions (
System.assertEquals
,System.assertNotEquals
,System.assert
) pour valider les résultats. - Test des scénarios positifs et négatifs : Couvrez les cas de succès et d’échec.
- Mocking des appels externes : Utilisez
HttpCalloutMock
pour simuler les réponses des appels HTTP.
Exemple : Utilisation de la méthode @testSetup
@isTest
public class AccountServiceTest {
@testSetup
static void setup() {
Account testAccount = new Account(Name = 'Test Account');
insert testAccount;
}
@isTest
static void testUpdateAccountDescriptions() {
// Récupération des comptes pour mise à jour
List<Account> accountsToUpdate = [SELECT Id, Name, Description FROM Account WHERE Name = 'Test Account'];
// Appel de la méthode de service
AccountService.updateAccountDescriptions(accountsToUpdate);
// Vérification des résultats
Account updatedAccount = [SELECT Id, Name, Description FROM Account WHERE Name = 'Test Account'];
System.assertEquals('Updated description for Test Account', updatedAccount.Description);
}
}
Conclusion
Vous avez maintenant appris l’importance des tests Apex et de la couverture de code, comment écrire des classes de test Apex, et comment exécuter des tests et vérifier la couverture de code. En suivant les meilleures pratiques de test, vous pouvez assurer la qualité et la fiabilité de votre code Salesforce, faciliter la maintenance et le déploiement, et respecter les exigences de déploiement Salesforce.