【发布时间】:2019-04-23 07:08:34
【问题描述】:
我有一个名为example.go 的文件和另一个名为example_test.go 的测试文件,它们都在同一个包中。我想在example.go中测试一些未导出的函数
当我运行测试时,example_test.go 中未定义未导出的函数。我想知道在同一包中的测试文件中测试未导出函数的最佳约定是什么?
【问题讨论】:
-
请显示minimal reproducible example。如果测试文件在同一个包中,那么它可以访问所有包级别的标识符。
-
如果它们在同一个包中,所有函数和全局变量应该可以相互访问。你是如何运行你的测试的?
go test ./...? -
未导出的标识符只能从同一个包中访问,因此请在
example_test.go中使用相同的包声明(白盒测试)。它还必须与example.go位于同一文件夹中。更多详情见How can I allow one package access to another package's unexported data only when testing? -
你现在跑得怎么样?只需将目录更改为
foo/bar/,然后运行go test。 -
“当我运行测试时,未导出的函数是未定义的” 不,它们不是。你又犯了一个错误。
标签: unit-testing go private-methods