gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 01:46:18 26 4
gpt4 key购买 nike

来自测试文档:

“该包构建在一个临时目录中,因此它不会干扰非测试安装。”

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

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

.\helloplanet.go

.\行星\行星.res

.\helloplanet_test.go

go test

在 Temp\go-build 中生成一个 exe... 但它不会在那里重新创建一个 planets\子目录,因此在 helloplanet.exe 中寻找 planets\planetary.res 的任何代码当然不会找到

该如何应对?

最佳答案

这是一个实际上有效的解决方案。我发现这个埋在 jetbrains forum .这是用户 Daniil Maslov 提出的答案:


技巧其实很简单,就是获取当前执行并将..添加到项目根目录。

创建一个新的目录和文件,如 testing_init.go,内容如下:

package testing_init

import (
"os"
"path"
"runtime"
)

func init() {
_, filename, _, _ := runtime.Caller(0)
dir := path.Join(path.Dir(filename), "..")
err := os.Chdir(dir)
if err != nil {
panic(err)
}
}

之后,只需将包导入任何测试文件即可:


package main_test

import (
_ "project/testing_init"
)

现在您可以从项目根目录指定路径

关于testing - 如何使用相对目录测试 Go 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22457861/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com