我正在为Go中的应用程序编写一些单元测试。但是,测试失败,因为它找不到配置文件。通常,二进制文件在路径conf/*.conf下的工作目录中查找配置文件。
我认为浏览包含conf/的目录并在其中运行go test会解决这个问题,但它仍然报告文件系统无法找到指定的路径。
我如何告诉go test使用某个目录作为工作目录,以便实际执行测试?
发布于 2015-01-28 19:05:42
您可以使用Caller获取当前测试源文件的路径,如下所示:
package sample
import (
"testing"
"runtime"
"fmt"
)
func TestGetFilename(t *testing.T) {
_, filename, _, _ := runtime.Caller(0)
t.Logf("Current test filename: %s", filename)
}发布于 2014-05-24 16:43:56
我认为这是不可能的。我没有找到明确说明这一点的文档,但我相信go test总是使用包目录(包含go源文件)作为工作目录。
发布于 2015-04-09 14:24:40
作为解决办法,我编译了测试并从当前目录执行测试。
go test -c && ./<mypackage>.test
或者,如果您想要一个可以使用的通用命令,可以用-o选项重命名测试文件。
go test -c -o xyz.test && ./xyz.test
https://stackoverflow.com/questions/23847003
复制相似问题