Avatar ·

Nomeação correta de pacotes para testes em Go (unit-testing)

Olá, colegas! Sou novo em Go e estou tentando entender como nomear corretamente os pacotes para testes. Tenho um projeto com a seguinte estrutura: ``` myapp/ ├── internal/ │ ├── calculator/ │ │ ├── calc.go │ │ └── calc_test.go │ └── validator/ │ ├── valid.go │ └── valid_test.go ├── cmd/ │ └── main.go └── go.mod ``` Dentro de `calc.go`, declarei o pacote `package calculator`. Em `calc_test.go`, também escrevi `package calculator`, e os testes funcionam. Mas vi que alguns desenvolvedores usam `package calculator_test` para arquivos de teste. Qual é a diferença? Quando devo usar `_test` no nome do pacote e quando não? Fico confuso porque, ao usar `package calculator_test`, não consigo acessar funções e variáveis não exportadas do pacote testado. Por exemplo, tenho uma função não exportada `addInternal()` em `calc.go` e quero testá-la. Se eu escrever `package calculator_test`, o Go emitirá um erro de compilação. Mas