Saleforce hat die Konvention, dass Klassen nicht ohne 75% oder mehr Abdeckung bereitgestellt werden können.
Tolle Konvention. Aber implementieren Sie Unit-Tests, "um durch die Abdeckung zu kommen" Es gibt viele Fälle, in denen verschiedene Kontraindikationen begangen wurden.
"Wofür ist der Komponententest? Wofür gelten die Regeln?"
Eine solche Szene zu entdecken, ist eine Reihe von Heilmethoden.
Es ist peinlich für diejenigen, die lernen, wie man TDD- und Unit-Tests richtig schreibt. Ich beschloss, darüber zu schreiben, wie der Unit-Test mit den folgenden Wünschen geheilt werden kann.
Um die Anzahl der Personen zu erhöhen, die Unit-Tests als "Unit-Tests" schreiben
Um die Anzahl der Menschen zu erhöhen, die "heilen, um zu atmen", ohne durchzukommen, selbst wenn sie kontraindizierte Fälle finden
Da es fast mit der Java-Klasse und JUnit identisch ist, ist es mit Java gekennzeichnet.
Angenommen, Sie haben eine Klasse wie diese, die nach der Aktualisierung im Trigger eines Objekts namens Dto1__c beginnt.
public with sharing class DtoHandler{
public static void execute(Dto__c dto){
if(dto.a == 'x'){
//Verarbeitung zum Einfügen in ein dto2-Objekt
insert new Dto2();
}
}
}
Es war so.
@isTest static void testExecute(){
Dto__c dto = new Dto(a='x', b='y');
insert dto;
update dto:
}
Oh, oh. Die Abdeckung steigt, weil sie sich mit einem Auslöser so bewegt.
trigger DtoTrigger on Dto__c (after update) {
DtoHandler.execute(Trigger.New);
munyamunya();
}
Nun, die Tatsache, dass der Komponententest nicht fehlschlägt, bedeutet, dass der Trigger ohne Fehler ausgeführt wird. Es scheint, dass ich das garantieren kann. (Sicherheit?) Dies ist ein Triggertest. Verwenden wir also testDtoTrigger ().
Wenn testExecute () der aktuelle Komponententest ist, wird auch munyamunya () ausgeführt? Ich meine, was wissen Sie, wenn Sie nur die Daten aktualisieren? Das ist es.
/*
*DtoTrigger-Testmethode
*/
@isTest static void testDtoTrigger(){
Test.startTest();
Dto__c dto = new Dto(a = 'x');
insert dto;
//DtoTrigger.Trigger-Update ausführen
//Erwarten: Beim Ausführen des Updates tritt kein Fehler auf
dto.a = 'y';
update dto;
Test.stopTest();
}
/*
*Testmethode der Ausführungsmethode
*/
@isTest static void testExecute(){
Test.startTest();
//zur Generation
Dto__c dto = new Dto(a='y');
//a = 'x'Andernfalls wird der Datensatz nicht eingefügt
DtoHandler.execute(dto);
Dto2__c dto2_1 = [SELECT Id FROM Dto2__c];
System.assertEquals(0,dto2_1.size());
//a = 'x'Im Fall von wird der dto2-Datensatz eingefügt
dto.a = 'y';
DtoHandler.execute(dto);
Dto2__c dto2_2 = [SELECT Id FROM Dto2__c];
System.assertEquals(1,dto2_2.size());
Test.stopTet();
}
Leute, die nicht an TDD gewöhnt sind oder TDD machen wollen, aber die Geschwindigkeit ist nicht gut genug. .. Wer sagt Wenn Sie den unglücklichen Komponententest weiterhin so reparieren, Ich denke, es ist einfacher zu verstehen, wenn Sie aus einem Unit-Test schreiben. Da es gute Regeln gibt, sollten wir sie gut nutzen.
Recommended Posts