这是Go中的包装问题。我有一个看起来像这样的包模式:
project
|
--- common_test.go
|
--- sub1
| |
| --- file.go
| --- file_test.go
--- sub2
| |
| |
| --- file.go
| --- file_test.go
common_test.go
看起来像这样:
package project
type Test struct {
...
}
sub1
和sub2
看起来像是:
package sub1
import "project"
func SomeTest(t *testing.T) {
test := project.Test{}
...
}
项目包仅包含common_test.go
文件,该文件定义sub1/file_test.go
和sub2/file_test.go
中使用的结构。但是,如果我尝试触发测试,则会收到以下错误:no buildable Go source files in project
。
我理解这是因为common_test.go
包含_test
后缀,因为它是project
包中唯一的文件。但我使用后缀的原因是我不希望编译该文件,除了测试执行。
有没有办法在不包含非测试文件的包中定义特定于测试的公共结构?在这种情况下,有什么好的做法?