Я видел несколько различных стратегий именования тестовых пакетов в Go и хотел узнать, каковы преимущества и недостатки каждой из них и какую из них мне следует использовать.
Стратегия 1:
Имя файла: github.com/user/myfunc.go
package myfunc
Имя тестового файла: github.com/user/myfunc_test.go
package myfunc
См. Пример bzip2 .
Стратегия 2:
Имя файла: github.com/user/myfunc.go
package myfunc
Имя тестового файла: github.com/user/myfunc_test.go
package myfunc_test
import (
"github.com/user/myfunc"
)
См. Пример провода .
Стратегия 3:
Имя файла: github.com/user/myfunc.go
package myfunc
Имя тестового файла: github.com/user/myfunc_test.go
package myfunc_test
import (
. "myfunc"
)
См. Пример строк .
Стандартная библиотека Go, похоже, использует комбинацию стратегии 1 и 2. Какую из всех трех мне следует использовать? Добавление package *_test
к моим тестовым пакетам проблематично, поскольку это означает, что я не могу тестировать частные методы своего пакета, но, может быть, есть скрытое преимущество, о котором я не знаю?