2013-05-03 39 views
61

go test komutu, yalnızca bir dizede *_test.go dosyalarını kapsar.Projemde tüm testler nasıl test edilir?

Ben testi dir ./ ve ./ dir altındaki her chindren ağaç dir tüm *_test.go dosyaları kapsamalıdır anlamına tüm projeyi, go test istiyorum.

Bunu yapmak için komut nedir?

$ go test foo/... 

Bu, tüm testler alma çalıştırmalısınız: Bu foo/ öneki ithalat yolu ile tüm testler gerektiğini

$ go test ./... 

:

cevap

126

Bu, tüm geçerli dizinde testleri ve onun alt dizinleri tüm çalışmalıdır yol, foo: : ile önceden hizalanmıştır.Bu $ GOPATH tüm testler olmalıdır:

$ go test ... 
+3

ZY'de FYI, son örnekteki çıplak ... ... 'kaçmalı, IE' git sınama \ ... ' –

37

From Go 1.9 onwards, 1.8 ile Go 1.6 olarak

go test ./... 

kullanın ./... da vendor directory eşleşti. https://github.com/golang/go/issues/11659, https://github.com/golang/go/issues/14417, https://github.com/go-lang-plugin-org/go-lang-idea-plugin/issues/2366, @ nickgrim yorumuna: vendored paketleri atlamak için,

go test $(go list ./... | grep -v /vendor/) 

Kaynaklar kullanmayı tercih ediyorum.

+1

Bu çözüm göründüğü kadar kolay, Windows'daki insanlar için çok daha karmaşık hale getirir (Ben de benim takım arkadaşlarımdan bazıları bunu çalıştırmak için değil. Bir Makefile'ye ihtiyaç duymadan her platformda yerli koşma Go harika. –

+0

İyi bir nokta ve benim sorunumun cevabı – Sion

+2

[Go 1.9'dan itibaren] (https://golang.org/doc/go1.9#vendor-dotdotdot) './... '/ vendor /' dizini, böylece tüm testlerinizi ve satıcı testlerinin hiçbirini "go test" ile çalıştırabilirsiniz. – nickgrim

İlgili konular