【发布时间】:2020-02-20 04:40:04
【问题描述】:
我的 Go 项目代码结构如下所示。
project
|
+-- x_test.go
|
+-- sub-directory
| |
| +-- y_test.go
x_test.go 有一些struct 和仅用于测试目的的方法。
这些struct 和方法在y_test.go 中是不可访问的。
有没有办法可以在子目录中导入测试文件?我无法将文件x_test.go 移动到子目录,因为它使用了根目录中定义的一些接口。
文件y_test.go不能放在根级别,因为它使用了sub-directory中定义的一些实例,这会导致循环依赖。
有没有办法让x_test.go 中定义的方法和结构对y_test.go 可见?
如果我不将x_test.go 视为测试文件,一切正常。即,我将其重命名为 x.go
【问题讨论】:
-
_test.go 来自被测试包以外的包中的文件不会被编译,所以不,你不能让它工作。改为定义普通类型和方法,可能在 internal package 中。
-
我确实尝试过,但我在
x_test.go中使用了一些未导出的结构。这就是将其保留在根级别的全部原因。将其移动到内部包会导致错误 -
@nikoo28 你想在包之间共享代码吗?测试代码与否,规则很简单,代码必须定义在非测试文件中,并且必须导出。
标签: unit-testing go testing integration-testing