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

From the testing docs:

"The package is built in a temporary directory so it does not interfere with the non-test installation."

So any code working with directories relative to the executable will not be present relative to Temp\go-build......

In other words, given the following:

.\helloplanet.go

.\planets\planetary.res

.\helloplanet_test.go

go test

Produces an exe in Temp\go-build... but it doesn't also re-create a planets\ subdir there, so any code in helloplanet.exe looking for planets\planetary.res of course won't find it.

How should one deal with this?

Though the test files are built in a temporary location, your working directory will be where you expect it. If you execute an os.Getwd() from within a test function, you'll see that your working directory is the package directory. This should work the same when running go test from within your package, or calling it with the full import path, as long as your package's location is in GOPATH.

In my packages, I often have a testadata directory, which is accessed via it's relative path, and have had no issues.