如何使用相对目录测试Go程序?

时间:2014-03-17 15:05:23

标签: testing go

来自测试文档:

“软件包内置在一个临时目录中,因此不会干扰非测试安装。”

因此,使用相对于可执行文件的目录的任何代码都不会相对于Temp \ go-build ......

出现

换句话说,给出以下内容:

\ helloplanet.go

\行星\ planetary.res

\ helloplanet_test.go

go test

在Temp \ go-build中生成一个exe ...但它也没有在那里重新创建一个行星\ subdir,所以helloplanet.exe中寻找行星\ planet.res的任何代码当然都找不到它

应该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

虽然测试文件是在临时位置构建的,但您的工作目录将位于您期望的位置。如果从测试函数中执行os.Getwd(),您将看到您的工作目录是包目录。只要您的软件包的位置在GOPATH中,当您从软件包中运行go test或使用完整导入路径调用它时,这应该是相同的。

在我的软件包中,我经常有一个testadata目录,可以通过它的相对路径访问,并且没有任何问题。