go程序包声明包含2个以上单词并用下划线分隔的问题
每个人,我都被眼前的景象弄糊涂了;我有以下go程序包声明包含2个以上单词并用下划线分隔的问题,go,go-modules,go-packages,go-testing,Go,Go Modules,Go Packages,Go Testing,每个人,我都被眼前的景象弄糊涂了;我有以下树: ├── go.mod ├── main.go └── server ├── server.go └── server_integration_test.go 假设我的模块名(mod.go)是gotest。server.go的内容: 包服务器 类型MyStruct struct{ 你好字符串 } func(m MyStruct)SayHello()字符串{ 返回m。你好 } 服务器集成测试的内容。转到: 包服务器\u集成\u测试
树
:
├── go.mod
├── main.go
└── server
├── server.go
└── server_integration_test.go
假设我的模块名(mod.go
)是gotest
。server.go的内容
:
包服务器
类型MyStruct struct{
你好字符串
}
func(m MyStruct)SayHello()字符串{
返回m。你好
}
服务器集成测试的内容。转到:
包服务器\u集成\u测试
进口(
“测试”
)
函数测试集成(t*testing.t){
t、 Errorf(“即将失败!”)
}
最后是我的main
.go`:
主程序包
进口(
“fmt”
“gotest/server”
)
func main(){
my:=server.MyStruct{Hello:“我的结构”}
fmt.Println(“来自mystruct”,my.SayHello())
}
当我运行go build
(或go test./…
)时,我收到以下错误:
main.go:5:2: found packages server (server.go) and server_integration (server_integration_test.go) in /tmp/gotest/server
但是如果我将我的服务器\u集成\u测试更改为:
包服务器\u测试
// ...
一切正常
有人能解释一下这里发生了什么吗?支持的server
包测试的包名是server
和server\u test
见:
“Go test”重新编译每个包以及名称与文件模式“*\u test.Go”匹配的任何文件。这些附加文件可以包含测试函数、基准函数和示例函数
声明后缀为“_Test”的包的测试文件将编译为单独的包,然后与主测试二进制文件链接并运行
\u test
后缀应用于被测包的名称(可以改进文档以使这一事实更加明确)。请参阅。go test
命令支持_test.go文件中的两个包名:目录中的包名和带有\u test
后缀的目录中的包名。软件包名server\u integration\u test
失败,因为它不是server
或server\u test
@CeriseLimón。请写下,作为回答而不是评论。谢谢你,Cerise,我尝试从你提供的链接中查找信息,但我无法找到。你介意在那里加上一句话或其他什么吗?