来自测试文档:
“软件包内置在一个临时目录中,因此不会干扰非测试安装。”
因此,使用相对于可执行文件的目录的任何代码都不会相对于Temp \ go-build ......
出现换句话说,给出以下内容:
\ helloplanet.go
\行星\ planetary.res
\ helloplanet_test.go
go test
在Temp \ go-build中生成一个exe ...但它也没有在那里重新创建一个行星\ subdir,所以helloplanet.exe中寻找行星\ planet.res的任何代码当然都找不到它
应该如何解决这个问题?
答案 0 :(得分:1)
虽然测试文件是在临时位置构建的,但您的工作目录将位于您期望的位置。如果从测试函数中执行os.Getwd()
,您将看到您的工作目录是包目录。只要您的软件包的位置在GOPATH中,当您从软件包中运行go test
或使用完整导入路径调用它时,这应该是相同的。
在我的软件包中,我经常有一个testadata目录,可以通过它的相对路径访问,并且没有任何问题。