¿Cómo 'ir a probar' todas las pruebas en mi proyecto?

141

El go testcomando cubre *_test.goarchivos en un solo directorio.

Quiero go testtodo el proyecto, lo que significa que la prueba debe cubrir todos los *_test.goarchivos en el directorio ./y cada directorio del árbol de niños debajo del directorio ./.

¿Cuál es el comando para hacer esto?

hardPass
fuente

Respuestas:

278

Esto debería ejecutar todas las pruebas en el directorio actual y todos sus subdirectorios:

$ go test ./...

Esto debería ejecutar todas las pruebas para directorios específicos dados:

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

Esto debería ejecutar todas las pruebas con la ruta de importación con el prefijo foo/:

$ go test foo/...

Esto debería ejecutar todas las rutas de importación de pruebas con el prefijo foo:

$ go test foo...

Esto debería ejecutar todas las pruebas en su $ GOPATH:

$ go test ...
zzzz
fuente
44
Para su información en zsh, el desnudo ...en el último ejemplo se debe escapar, IEgo test \...
Gabe Kopley
Cuando estoy tratando de ejecutar todas las pruebas en subdirectorio que estoy recibiendogo: warning: "subdir/..." matched no packages
Ivan Aracki
@zzzz ¿cómo ejecutar pruebas para carpetas específicas? decir "ir a probar foo ... bar ...?
Omurbek Kadyrbekov
go test ./...es realmente un gran comando! Gracias por ayudar :)
abejorro
53

Desde Go 1.9 en adelante , use

go test ./...

En Go 1.6 a 1.8, ./...también coincidía con el vendordirectorio . Para saltear paquetes vedados, usaría

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

Fuentes: 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 , comentario de @ nickgrim.

user7610
fuente
1
Tan fácil como parece esta solución, hace que sea mucho más complicado para las personas en Windows (no lo soy, pero algunos de mis compañeros de equipo lo son) ejecutar esto. La belleza de Go corriendo nativo en cada plataforma sin la necesidad de un Makefile es genial.
Konrad Kleine
55
Vale la pena señalar que a partir de Go 1.9 ./... ya no coincide con el ./vendor/directorio, por lo que puede ejecutar todas sus pruebas y ninguna de las pruebas de proveedor congo test ./...
nickgrim
11

Estructura de carpetas

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

ir comando de comando Comando

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

Informe de cobertura para todo el proyecto

ok      ProjectName/folderName1 10%
ok      ProjectName/folerName2  90%
ok      ProjectName/folerName2  85%
muthukumar selvaraj
fuente