2015-03-15 11 views
7

Ist es möglich, Verzeichnisse vom Testen zu überspringen. Zum Beispiel ist es aufgrund der folgenden Struktur möglich, mypackage, mypackage/other und mypackage/net, aber nicht mypackage/scripts zu testen? Ich meine, ohne einen go Testbefehl für jeden zu schreiben ( zB Test gehen, Testnetz geht, gehe Test andere)Go test Skip-Verzeichnis

mypackage 
mypackage/net 
mypackage/other 
mypackage/scripts 

Antwort

11

Go Test eine Liste der Pakete erfolgt auf der Kommandozeile zu testen (siehe go help packages) so Sie können, wie so eine beliebige Menge von Paketen mit einem einzigen Aufruf testen:

go test import/path/to/mypackage import/path/to/mypackage/other import/path/to/mypackage/net

Oder je nach Shell:

go test import/path/to/mypackage{,/other,/net}


Sie könnten in der Lage sein, interessant Anrufungen von go list als Argument verwendet werden (auch hier auf der Shell abhängig):

go test `go list` 

Ihr Kommentar sagt, dass Sie ein Unterverzeichnis, so überspringen mögen (je nach Shell) vielleicht dies:

go test `go list ./... | grep -v directoriesToSkip` 

wie bei allem, wenn Sie das tun, viel Sie ein Shell-Alias ​​machen könnte/was auch immer für sie.


Wenn der Grund, warum Sie Tests überspringen wollen, ist zum Beispiel, dass Sie lange/teure Tests, die Sie oft überspringen wollen, als die Tests könnte sie/sollte testing.Short() überprüfen und t.Skip() als angemessen bezeichnen.

Dann könnten Sie entweder laufen:

go test -short import/path/to/mypackage/...

oder aus dem mypackage Verzeichnis:

go test -short ./...

Sie andere Dinge verwenden können testing.Short() auslösen als auch übersprungen werden.

+0

Ich will nur, ohne ein Verzeichnis/Paket überspringen 'manuell schreiben' gehen Test packagex'' für jedes Paket, das ich testen möchten. Nehmen wir an, Sie haben 100 Pakete, möchten aber eines überspringen. Macht das Sinn? – themihai

+0

@mihai Ich habe eine Go-Liste hinzugefügt | grep -v Beispiel; oder Sie könnten veranlassen, dass die Tests in diesem Unterverzeichnis sich selbst überspringen, es sei denn, eine Bedingung ist festgelegt. Oder Sie könnten Ihre Verzeichnisse so umstrukturieren, dass das "Beleidigende" irgendwo anders ist (wenn es wirklich irgendwie anders ist als die anderen). –

+0

go test 'go list./... | grep -v directoriesToSkip überspringt "directoriesToSkip" nicht, wenn sie Unterverzeichnisse des aktuellen Verzeichnisses sind. –

-1

Wenn Sie GoConvey verwenden, können Sie einfach auf das kleine Augensymbol klicken, um das Paket für diese Sitzung zu ignorieren. Oder Sie könnten ein profile für dieses Paket einrichten, um das Ignorieren dieses Pakets über goconvey-Sitzungen zu verhindern.

https://github.com/smartystreets/goconvey/wiki/Web-UI

+0

Soweit ich weiß, ist diese Antwort vollkommen gültig. Es bietet einen einfachen Weg (einen, den ich ** die ganze Zeit ** benutze), um ein bestimmtes Verzeichnis zu überspringen, wenn Tests ausgeführt werden. Nicht sicher, warum es abgelehnt wurde. Probieren Sie es aus, Sie werden sehen, dass es funktioniert ... – mdwhatcott