Ich habe eine Frage zu Code-Coverage-Erzeugung in Go (lang) projects.I haben diese einfache Struktur:Testing in GO - Code-Coverage innerhalb von Projektpaketen
ROOT/
config/
handlers/
lib/
models/
router/
main.go
config
enthält Konfiguration in JSON und einem einfachen config.go
dass liest und analysiert JSON Datei und füllt die Config
struct die dann verwendet wird, wenn DB-Verbindung zu initialisieren. handlers
enthält Controller (d. H. Handler der jeweiligen METHOD + URL beschrieben in router/routes.go
). lib
enthält einige DB, Request Responder und Loggerlogik. models
enthält Strukturen und ihre Funktionen, die von-zu JSON und DB gemappt werden sollen. Schließlich enthält router
die Router- und Routen-Definition.
Grundsätzlich nur durch das Testen eines einzelnen Handlers sicherstellen, dass meine Konfiguration, Logger, db, Responder, Router und entsprechendes Modell aufgerufen werden (und auch irgendwie getestet).
Nun, wenn dies eine PHP oder Java wäre oder ich weiß nicht, was sonst Sprache, würde die Durchführung und Durchführung dieser Single-Handler-Test eine Codeabdeckung auch für alle anderen aufgerufenen Teile des Codes erstellen, auch wenn sie in verschiedenen Ordnern sind (dh Pakete hier). Leider ist das bei Go nicht der Fall.
Und es gibt sehr wenig Code in den meisten meiner lib
Dateien nur eine Methode, die (wie InitDB()
oder ReadConfig()
oder NewRouter()
oder Logger()
) so in der Lage zu sein, Code-Coverage zu haben, um ihnen, dass ich dumm Tests in diesen Paketen erstellen haben, wie gut, während sie bereits aufgerufen und getestet wurden, indem sie die Haupt-URLs, die Pakete handhaben, getestet haben.
Gibt es eine Möglichkeit, wie Code-Coverage von Paketen erhalten auch für andere Pakete enthalten in einem Projekt?
Wenn Sie den ersten Teil entfernen (wie es offensichtlich nicht beabsichtigt ist, dass in Gehen Sie zu tun) und halten nur Ihre (wenn auch persönlich, aber ich stimme mit Ihnen hier so können wir es eine gute Praxis betrachten) Meinung, werde ich wahrscheinlich akzeptieren Sie Ihre Antwort, wenn es nicht besser bis morgen Abend ist :-) – shadyyx
ich weiß, es ist nicht so zu tun Tests gedacht, aber es ist der einzige Weg, (die ich kenne), um die „Code-Coverage“ Sie wollen während des Tests zu erhalten. Ich habe diesen Teil hinzugefügt, weil ich glaube, dass er deine Frage beantwortet. – AJPennster