Eu vi várias estratégias diferentes de nomenclatura de pacotes de teste no Go e queria saber quais são os prós e os contras de cada uma e qual devo usar.
Estratégia 1:
Nome do arquivo: github.com/user/myfunc.go
package myfunc
Nome do arquivo de teste: github.com/user/myfunc_test.go
package myfunc
Veja bzip2 para um exemplo.
Estratégia 2:
Nome do arquivo: github.com/user/myfunc.go
package myfunc
Nome do arquivo de teste: github.com/user/myfunc_test.go
package myfunc_test
import (
"github.com/user/myfunc"
)
Veja fio para um exemplo.
Estratégia 3:
Nome do arquivo: github.com/user/myfunc.go
package myfunc
Nome do arquivo de teste: github.com/user/myfunc_test.go
package myfunc_test
import (
. "myfunc"
)
Veja strings para um exemplo.
A biblioteca padrão Go parece usar uma mistura das estratégias 1 e 2. Qual das três devo usar? É uma dor anexar package *_testaos meus pacotes de teste, pois significa que não posso testar os métodos privados do meu pacote, mas talvez haja uma vantagem oculta da qual não estou ciente?