¿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?

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 ...

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.


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%
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.