Bestimmen der Testabdeckung in Go-Integrationstests
Integrationstests zielen darauf ab, die Funktionalität eines Systems als Ganzes zu bewerten, oft durch Verspottung oder Kontrolle externe Abhängigkeiten. Die Bestimmung der Testabdeckung von Integrationstests stellt jedoch besondere Herausforderungen dar.
Messung der Abdeckung in Nicht-Paket-Tests
In dem beschriebenen Szenario sind die Tests von den Paketen getrennt sie testen. Folglich meldet der Befehl go test -cover eine Abdeckung von 0 %. Um dies zu beheben, kann man die Direktive -coverpkg verwenden.
Verwenden von -coverpkg für die spezifische Paketabdeckung
Die Direktive -coverpkg ermöglicht die Messung der Testabdeckung in einem bestimmten Paket, auch wenn die Tests extern sind. Es verwendet den Paketpfad als Argument.
Zum Beispiel misst der folgende Befehl die Abdeckung des Pakets „mypackage“:
$ go test -cover -coverpkg mypackage ./src/api/...
Dieser Ansatz ermöglicht die gezielte Analyse der Paketabdeckung in Integrationstests.
Beispielabdeckungsausgabe
Betrachten Sie ein Beispiel, bei dem das API-Paket enthält Tests in main_test.go. Der Großteil der Geschäftslogik befindet sich im Paket mypackage. Das Ausführen des Befehls mit -coverpkg bietet eine genauere Darstellung der Abdeckung:
$ go test -cover -coverpkg mypackage ./src/api/... ok /api 0.190s coverage: 50.8% of statements in mypackage ok /api/mypackage 0.022s coverage: 0.7% of statements in mypackage
Diese Ausgabe zeigt, dass die Tests 50,8 % der Anweisungen im mypackage-Paket abdecken. Im Gegensatz dazu würde ohne die Verwendung von -coverpkg die Abdeckung mit 71,0 % höher erscheinen, was auf Tests außerhalb des angegebenen Pakets zurückzuführen ist.
Zusätzliche Überlegungen
Es lohnt sich Beachten Sie, dass Integrationstests aufgrund der Komplexität des Mockings und der Natur systemweiter Tests normalerweise weniger Code abdecken als Unit-Tests. Der oben beschriebene Ansatz bietet jedoch eine Möglichkeit, die tatsächliche Abdeckung von Integrationstests speziell für relevante Pakete zu messen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3