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.