vá testar o pacote em paralelo

Por padrão, ao usar, go testvocê descobrirá que todos os testes em um único pacote serão executados em série.

O que é ótimo! Se você deseja executá-los em paralelo, pode especificar o sinalizador desejado.

O que se deve observar é quando você está executando todo o conjunto de testes do seu projeto Go, com vários pacotes.

por exemplo, na seguinte estrutura de projeto:
main.go database/ database.go database_test.go process/ process.go process_test.go

Executar os comandos a seguir na raiz do projeto go test ./...irá , na verdade, executar os testes na database/pasta e na process/pasta, em paralelo, se você tiver mais de um núcleo na máquina host. Na verdade, o padrão será o número máximo de núcleos disponíveis no host. Observe, não as funções de teste individuais, mas todos os pacotes.

No entanto, isso não está totalmente claro se você observar o próprio comando go build na linha 123: http://golang.org/src/cmd/go/build.go#L123
. Você verá que o sinalizador -p o padrão é o número máximo de núcleos. Este resultado é que as compilações / testes do pacote serão executados em paralelo.

Eu fui pego por isso. Particularmente ao executar testes de integração com o mesmo banco de dados entre dois pacotes. O que acontece é que quando uma suíte começa preenchendo o banco de dados com alguns acessórios, pode ser que a desmontagem de outra suíte de teste não tenha terminado. Se você limpar em uma separação truncando suas tabelas, poderá descobrir que o truncamento ocorre após a inserção e nenhum dos dados está lá quando você esperava.

Mantenha isso em mente! Se você deseja forçar os pacotes a serem compilados / testados em série; usar e você deve ficar bem!go test -p 1 ./...