Quiero crear un paquete en Go con pruebas y ejemplos para el paquete como subdirectorios para mantener el espacio de trabajo más limpio. ¿Es posible? y si lo es, ¿cómo?
Toda la documentación siempre coloca el código de prueba en el mismo lugar que el otro código, ¿es esto mejor de alguna manera o solo una convención?
go test ./...
ejecutará pruebas en la carpeta actual y todas las subcarpetas. Vea mi respuesta a continuaciónRespuestas:
Tenga en cuenta que puede ejecutar
go test
"recursivamente": debe enumerar todos los paquetes que desea probar .Si está en la carpeta raíz de su proyecto Go, escriba:
La
./...
notación ' ' se describe en la sección " Descripción de listas de paquetes " del comando "go
":Si mantiene sus
_test.go
archivos en una subcarpeta, elgo test ./...
comando ' ' podrá recogerlos.Pero:
Dicho esto, preferiría mantener el
_test.go
archivo justo al lado del archivo fuente principal: es más fácil de encontrar.fuente
Coloque sus pruebas junto con su código en el mismo directorio en un archivo llamado
file_test.go
donde "archivo" es el nombre del archivo de código fuente que está probando. Esto es una convención y he encontrado que es mejor en mi propia experiencia.Si la
go test
herramienta no es lo suficientemente automatizada para usted, puede buscar en GoConvey , que tiene una interfaz de usuario web que actualizará y ejecutará automáticamente las pruebas tradicionales de Go, así como las pruebas de GoConvey (que se basan en el comportamiento y son más autodocumentadas). que las pruebas tradicionales de Go).fuente
go test
también puede funcionar para subcarpetas. Vea mi respuesta a continuaciónEDITADO
Basado en la respuesta de VonC,
Esta respuesta es válida en
go1.11
. Aún no probado en la parte superiorgo
versiones .Para aquellos de ustedes a quienes les gusta mantener sus pruebas en una subcarpeta, digamos
test
, luego ejecutandointentará ejecutar pruebas en todas las carpetas, incluso aquellas que no contengan ninguna prueba, por lo que tendrá un
?
informe posterior para las carpetas que no sean de prueba.Corriendo
en cambio, apuntará solo a sus
test
carpetas, por lo que tendrá un informe limpio centrado solo en sus carpetas de pruebas.PRECAUCIÓN
Tenga en cuenta que el uso de subcarpetas de prueba evitará el cálculo del informe de cobertura. La filosofía de go es dejar archivos de prueba en las carpetas del paquete.
fuente
go test ./.../test
devuelvego: warning: "./.../test" matched no packages
// no solo apunta a las carpetas de prueba. go versión go1.13 darwin / amd64Normalmente no hago pruebas, pero puede agrupar su archivo en directorios y usar la importación como
import "./models"
si es un nivel hacia fueraimport "../models
si es un nivel hacia fuera y un nivel hacia adentroPor ejemplo, para:
./models/todo.go
./test/todo_test.go
a prueba
todo.go
detodo_test.go
, a su importación en eltodo_test.go
seráimport "../models"
fuente