导出结构仅用于在Golang中进行测试

rza*_*jac 9 go

我有一个许多其他包使用的实用程序包.我还创建了一些实现这些接口的测试结构.我把它们放进去了interfaces_test.go

我希望能够在我的*_test.go文件中的其他包中导入这些测试结构.

我在http://golang.org/src/pkg/os/export_test.go中看到了类似的内容,但无论我尝试什么,我都会收到与此类似的错误:

go test something/mypackage
mypackage/ant_lat_lon_test.go:46: undefined: rutl.TestAntenner
FAIL    something/mypackage [build failed]
Run Code Online (Sandbox Code Playgroud)

有办法吗?

Jam*_*dge 8

*_test.go仅在测试文件匹配的一部分时才编译文件匹配。如果要测试使用软件包B的软件包A,则将无法访问_test.go软件包B中的代码。

因此,这两个选项是:

  1. 始终将测试支持代码编译到软件包B中。
  2. 如果测试支持代码仅取决于B的导出接口,请考虑将其拆分为单独的程序包。

  • @hraban:我并不是建议您将“ import“ testing”`放入程序包的非测试文件中。问题似乎在谈论是否要导出接口的某些假/模拟实现以供其他包中的测试使用,并且如果可执行文件实际上未引用链接器,则应该将其忽略。 (2认同)