Apex-Testfehler und Codeabdeckungsfehler bei Salesforce-Deployments beheben
Produktions-Deployments erfordern bestandene Apex-Tests und mindestens 75% Codeabdeckung, und Salesforce blockiert die Freigabe, bis beide Bedingungen erfüllt sind.
Tritt auf bei: Deployment in die Produktion oder einem vollständigen Sandbox-RefreshWas das bedeutet
Salesforce verlangt, dass Deployments in die Produktion Apex-Tests ausführen und eine durchschnittliche Codeabdeckung von mindestens 75% über alle Classes und Trigger erreichen, wobei jeder Trigger eine gewisse Abdeckung benötigt. Ein Deployment schlägt fehl, mit einer Auflistung der Assertion oder Exception jedes fehlgeschlagenen Tests, sobald ein Test eine unbehandelte Exception wirft, eine Assertion fehlschlägt oder die durchschnittliche Abdeckung der Org unter diesen Schwellenwert fällt.
Dies gilt nur für Deployments in die Produktion und vollständige Sandboxes mit RunLocalTests oder RunAllTestsInOrg; Deployments in Developer-Sandboxes oder Scratch-Orgs mit NoTestRun überspringen die Anforderung vollständig, weshalb Abdeckungslücken oft erst am Releasetag auffallen.
Häufige Ursachen
Die Lösung
- Fehler zuerst lokal reproduzierenFühren Sie die vollständige lokale Testsuite mit Abdeckung gegen Ihre Sandbox aus, bevor Sie den Code anfassen, damit Sie den echten Fehler debuggen und nicht ein veraltetes Deploy-Log.
sf apex run test --test-level RunLocalTests --code-coverage --result-format human --wait 20 - Tests für jeden neuen Code vor dem Deployment schreibenFügen Sie Testmethoden hinzu, die neue Classes und Trigger ausüben, damit die durchschnittliche Abdeckung der Org vor der Freigabe 75% übersteigt.
- Tests eigenständig machenSchreiben Sie Tests so um, dass sie ihre eigenen Testdaten mit @TestSetup oder Test.startTest() erstellen, statt sich auf Datensätze zu verlassen, die zufällig in der Ziel-Org existieren.
Wie Serpent das verhindert
Die VS-Code-Erweiterung von Serpent zeigt Testergebnisse und Abdeckung direkt an der Aufgabe an, sodass eine Abdeckungslücke oder eine fehlgeschlagene Assertion sichtbar wird, bevor eine Aufgabe eingereicht wird, statt erst bei einem Produktions-Deploy entdeckt zu werden. Siehe die Bibliothek der Salesforce-Deploymentfehler.
Prävention
Verwandte Fehler
APEX TEST FAILURES, beantwortet
Kostenlos starten. Keine Kreditkarte, keine Installation, keine Verpflichtung.
In unter 15 Minuten eingerichtet. Keine DevOps-Einstellung nötig.
