У меня в одном пакете 2 файла.
# my_package1/my_file1.go
func myFunc1() {
//....
}
# my_package1/my_file1_test.go
type MyPackageSuite struct {
suite.Suite
}
func (s *MyPackageSuite) MyTest1() {
//...............
res1 := myFunc1()
//...............
}
Я провожу тест go test my_package1/my_file1_test.go -v
, и он возвращает undefined: myFunc1
Но они в одной упаковке. Почему ошибка? Как это исправить? Я не ищу сделать метод общедоступным.
Обновление1:
$ ls webhook
doc.go webhook.go webhook_test.go
потом
$ go test webhook
can't load package: package webhook: malformed module path "webhook": missing dot in first path element
$ go test webhook/webhook
can't load package: package webhook/webhook: malformed module path "webhook/webhook": missing dot in first path element
$ go test webhook/webhook.go
? command-line-arguments [no test files]
$ go test webhook/webhook_test.go
# command-line-arguments [command-line-arguments.test]
webhook/webhook_test.go: undefined: myFunc1
FAIL command-line-arguments [build failed]
FAIL
webhook
, и, поскольку у него нет имени хоста в качестве первого компонента, предполагается, что это пакет stdlib. - person Burak Serdar   schedule 03.12.2019go test
из каталога пакета, вызываетimport cycle not allowed in test
. В противном случае без этого теста с частным методом он работает. То есть это работает, если я не использую тест с частным методом - ›go test webhook/webhook_test.go
- person Totto   schedule 03.12.2019go
работает с пакетами (есть несколько режимов работы с файлами, но в большинстве случаев их лучше избегать). Если вы не можете запустить простойgo test
(например, из-за цикла импорта или из-за того, что вы неправильно написали свой пакет при тестировании), то установка вашего пакета нарушена и должна быть исправлена. Здесь не спорят. Go запрещает циклы импорта и требует одного из двух имен пакетов в файлах _test.go. - person Volker   schedule 03.12.2019package p
и иметь файл p_test.go, объявляющий себя какpackage p_test
, тогда вы не сможете получить доступ к неэкспортированному материалу из p. Это по дизайну и нельзя обойти с помощью уродливых уловок. Просто перестань это делать. - person Volker   schedule 03.12.2019"go test ./utf8"
вместо того, чтобы указывать полный путь. Но помните, что сказал Волкер, поскольку файл, чтобы иметь возможность получить доступ к неэкспортируемому идентификатору, он должен объявить тот же пакет, что и файл, объявляющий идентификатор. - person mkopriva   schedule 03.12.2019