Saleforce a une convention selon laquelle les classes ne peuvent pas être déployées sans une couverture de 75% ou plus.
Grande convention. Mais implémentez des tests unitaires "pour passer la couverture" Il existe de nombreux cas où diverses contre-indications ont été commises.
"A quoi sert le test unitaire? A quoi servent les règles?"
Découvrir une telle scène est une série de remèdes.
C'est embarrassant pour ceux qui étudient comment écrire correctement le TDD et les tests unitaires. J'ai décidé d'écrire sur la façon de guérir le test unitaire avec les souhaits suivants.
Pour augmenter le nombre de personnes qui écrivent des tests unitaires sous forme de "tests unitaires"
Augmenter le nombre de personnes qui «guérissent pour respirer» sans passer même si elles trouvent des cas contre-indiqués
Comme il est presque identique à la classe java et à JUnit, il est étiqueté avec java.
Supposons que vous ayez une classe comme celle-ci qui commence après la mise à jour dans le déclencheur d'un objet appelé Dto1__c.
public with sharing class DtoHandler{
public static void execute(Dto__c dto){
if(dto.a == 'x'){
//Traitement à insérer dans l'objet dto2
insert new Dto2();
}
}
}
C'était comme ça.
@isTest static void testExecute(){
Dto__c dto = new Dto(a='x', b='y');
insert dto;
update dto:
}
Oh, oh! La couverture augmente car elle se déplace comme ça avec un déclencheur.
trigger DtoTrigger on Dto__c (after update) {
DtoHandler.execute(Trigger.New);
munyamunya();
}
Eh bien, le fait que le test unitaire n'échoue pas signifie que le déclencheur sera exécuté sans échec. Il semble que je puisse garantir cela. (collatéral?) Ceci est un test de déclenchement, alors utilisons testDtoTrigger ().
Donc, si testExecute () est le test unitaire courant, munyamunya () est également exécuté? Je veux dire, que savez-vous en mettant simplement à jour les données? C'est tout.
/*
*Méthode de test DtoTrigger
*/
@isTest static void testDtoTrigger(){
Test.startTest();
Dto__c dto = new Dto(a = 'x');
insert dto;
//DtoTrigger.Exécuter la mise à jour du déclencheur
//attendre: aucune erreur ne se produit lors de l'exécution de la mise à jour
dto.a = 'y';
update dto;
Test.stopTest();
}
/*
*méthode de test de la méthode d'exécution
*/
@isTest static void testExecute(){
Test.startTest();
//génération dto
Dto__c dto = new Dto(a='y');
//a = 'x'Sinon, l'enregistrement ne sera pas inséré
DtoHandler.execute(dto);
Dto2__c dto2_1 = [SELECT Id FROM Dto2__c];
System.assertEquals(0,dto2_1.size());
//a = 'x'Dans le cas de, l'enregistrement dto2 est inséré
dto.a = 'y';
DtoHandler.execute(dto);
Dto2__c dto2_2 = [SELECT Id FROM Dto2__c];
System.assertEquals(1,dto2_2.size());
Test.stopTet();
}
Les gens qui ne sont pas habitués au TDD ou qui veulent faire du TDD mais la vitesse n'est pas suffisante. .. Qui dit Si vous continuez à corriger le malheureux test unitaire comme celui-ci, Je pense que c'est plus facile à comprendre si vous écrivez à partir d'un test unitaire. Puisqu'il existe de bonnes règles, faisons-en bon usage.