Ich möchte in Go ein Paket mit Tests und Beispielen für das Paket als Unterverzeichnisse erstellen, um den Arbeitsbereich sauberer zu halten. Ist das möglich und wenn ja wie?
In der gesamten Dokumentation wird der Testcode immer an der gleichen Stelle wie der andere Code platziert. Ist dies in irgendeiner Weise besser oder nur eine Konvention?
go test ./...
Führt Tests für den aktuellen Ordner und alle Unterordner aus. Siehe meine Antwort untenAntworten:
Beachten Sie, dass Sie "rekursiv" ausführen können
go test
: Sie müssen alle Pakete auflisten, die Sie testen möchten .Wenn Sie sich im Stammordner Ihres Go-Projekts befinden, geben Sie Folgendes ein:
Die '
./...
' Notation wird im Abschnitt " Beschreibung der Paketlisten " des " Befehlsgo
" beschrieben:Wenn Sie Ihre
_test.go
Dateien in einem Unterordner aufbewahren, kann dergo test ./...
Befehl ' ' sie abholen.Aber:
Trotzdem würde ich es immer noch vorziehen, die
_test.go
Datei direkt neben der Hauptquelldatei zu behalten : Sie ist leichter zu finden.quelle
Platzieren Sie Ihre Tests neben Ihrem Code im selben Verzeichnis in einer Datei mit dem Namen
file_test.go
"file" ist der Name der Quellcodedatei, die Sie testen. Dies ist eine Konvention, und ich habe festgestellt, dass sie meiner eigenen Erfahrung nach am besten ist.Wenn das
go test
Tool für Sie nicht ausreichend automatisiert ist, können Sie sich GoConvey ansehen , das über eine Web-Benutzeroberfläche verfügt , die sowohl herkömmliche Go-Tests als auch GoConvey-Tests (die auf dem Verhalten basieren und sich selbst dokumentieren) automatisch aktualisiert und ausführt als herkömmliche Go-Tests).quelle
go test
können auch für Unterordner arbeiten. Siehe meine Antwort untenBEARBEITET
Aufbauend auf VonCs Antwort,
Diese Antwort ist gültig in
go1.11
. Noch nicht in oberengo
Versionen getestet .Für diejenigen unter Ihnen, die ihre Tests beispielsweise in einem Unterordner aufbewahren
test
und dann ausführen möchtenEs wird versucht, Tests in jedem Ordner auszuführen , auch in solchen, die keinen Test enthalten. Daher wird
?
im nachfolgenden Bericht ein Ordner für Nicht-Testordner angezeigt.Laufen
Stattdessen werden nur Ihre
test
Ordner als Ziel ausgewählt, sodass ein sauberer Bericht nur für Ihre Testordner erstellt wird.VORSICHT
Beachten Sie bitte, dass die Verwendung von Testunterordnern die Berechnung von Abdeckungsberichten verhindert. Die Phylosophie von go besteht darin, Testdateien in den Paketordnern zu belassen.
quelle
go test ./.../test
returngo: warning: "./.../test" matched no packages
// zielt nicht nur auf Testordner ab. go version go1.13 darwin / amd64Normalerweise teste ich nicht, aber Sie können Ihre Datei in Verzeichnissen gruppieren und importieren wie verwenden
import "./models"
if ist eine Ebene outimport "../models
wenn ist eine Ebene out und eine Ebene inZum Beispiel für:
./models/todo.go
./test/todo_test.go
In dem Test
todo.go
austodo_test.go
, den Import in demtodo_test.go
sein wirdimport "../models"
quelle