Projemdeki tüm testleri nasıl test edeceğim?


141

go testKomut kapakları *_test.gotek dir dosyaları.

go testTüm projeyi istiyorum , yani test dir'deki tüm *_test.godosyaları ./ve dir altındaki tüm çocuk ağaçlarını kapsamalıdır ./.

Bunu yapmak için komut nedir?

Yanıtlar:


278

Bu işlem, geçerli dizindeki ve tüm alt dizinlerindeki tüm testleri çalıştırmalıdır:

$ go test ./...

Bu, belirli belirli dizinler için tüm testleri çalıştırmalıdır:

$ go test ./tests/... ./unit-tests/... ./my-packages/...

Bu, tüm testleri ön ekli içe aktarma yolu ile çalıştırmalıdır foo/:

$ go test foo/...

Bu, ön ekli tüm testleri içe aktarma yolunu çalıştırmalıdır foo:

$ go test foo...

Bu, $ GOPATH ürününüzdeki tüm testleri çalıştırmalıdır:

$ go test ...

4
ZY içinde FYI ..., son örnekteki çıplak go test \...
kaçmalı

go: warning: "subdir/..." matched no packages
Alt dizindeki

@zzzz belirli klasörler için testler nasıl yapılır? "go test foo ... bar ...?"
Omurbek Kadyrbekov

go test ./...gerçekten harika bir komut !. Yardım için teşekkürler :)
yaban arısı

53

Go 1.9'dan itibaren ,

go test ./...

Go 1.6 ile 1.8 arasında, dizin./... de eşleşti . Satılan paketleri atlamak için şunu kullanırsınız:vendor

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

Kaynaklar: 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 / konular / 2366 , @ nickgrim'in yorumu.


1
Bu çözüm göründüğü kadar kolay, Windows'taki insanlar için çok daha karmaşık hale getiriyor (değilim ama takım arkadaşlarımdan bazıları) bunu çalıştırıyor. Bir Makefile'ye ihtiyaç duymadan Go'nun her platformda yerli çalışmasının güzelliği harika.
Konrad Kleine

5
Worth işaret ederek 1.9 Go itibariyle ./... artık maçları ./vendor/dizini, kendi testlerin hepsi çalıştırın ve ile satıcı-testlerin hiçbiri böylecego test ./...
nickgrim

11

Klasör Yapısı

ProjectName/folderName1/file_test.go
ProjectName/folderName2/file1_test.go
ProjectName/folderName3/file2_test.go

test komutuna git Komut

   ProjectName$ go test -v ./...
    ProjectName$ go test  ./...
    ProjectName$ go test -cover ./...

Tüm Proje için Kapsama Raporu

ok      ProjectName/folderName1 10%
ok      ProjectName/folerName2  90%
ok      ProjectName/folerName2  85%
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.