Golang:测试和工作目录

新手上路,请多包涵

我正在用 Go 为我的应用程序编写一些单元测试。但是测试失败了,因为它找不到配置文件。通常,二进制文件会在路径 conf/*.conf 下的工作目录中查找配置文件。

我认为浏览到包含 conf/ 的目录并运行 go test 可以解决问题,但它仍然报告文件系统找不到指定的路径。

我如何告诉 go test 使用某个目录作为工作目录,以便实际执行测试?

原文由 Jesse Brands 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

您可以使用 Caller 获取当前测试源文件的路径,如下所示:

 package sample

import (
    "testing"
    "runtime"
    "fmt"
)

func TestGetFilename(t *testing.T) {
    _, filename, _, _ := runtime.Caller(0)
    t.Logf("Current test filename: %s", filename)
}

原文由 N8Theo 发布,翻译遵循 CC BY-SA 4.0 许可协议

我不相信这是可能的。我无法找到明确说明这一点的文档,但我相信 go test 始终使用包目录(包含 go 源文件)作为工作目录。

原文由 Evan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题