gpt4 book ai didi

go - 是否可以在 golang 测试中将包结构的当前根作为字符串获取?

转载 作者:IT老高 更新时间:2023-10-28 13:02:36 25 4
gpt4 key购买 nike

我正在为我的单元测试编写一个实用函数,它被多个包中的单元测试使用。此实用程序函数必须读取特定文件(始终是同一个文件)。以下是三个不起作用的解决方案,解释我在寻找什么以及为什么。

  1. 硬编码绝对路径。这会失败,因为尝试测试项目的另一个用户可能在绝对路径上有不同的前缀。

  2. 从定义实用程序函数的文件路径硬编码相对路径。这会失败,因为导入和使用此函数的包不一定与定义实用程序函数的文件位于文件层次结构的同一级别,并且相对路径是相对于导入器而非导入的。

  3. 传入每个调用者相对于调用者包的文件的相对路径。这实际上可行,但似乎非常冗长,因为现在必须更改每个调用者以传递一个文件。

我看到了第四个解决方案,我可以在实用程序函数中硬编码一个相对于顶级包的根目录的路径。但是,我还没有找到一种在代码中获取根目录的方法,尽管我怀疑有一种方法,因为可以从根目录解析导入。

那么,我怎样才能得到抢手的根目录呢?

我查看了各种 Go 文档,但到目前为止都没有找到解决方案。我也看过this question但那里的解决方案相当于上面的#3。

最佳答案

不用C也可以用我的方法:

package mypackage

import (
"path/filepath"
"runtime"
"fmt"
)

var (
_, b, _, _ = runtime.Caller(0)
basepath = filepath.Dir(b)
)

func PrintMyPath() {
fmt.Println(basepath)
}

https://play.golang.org/p/ifVRIq7Tx0

关于go - 是否可以在 golang 测试中将包结构的当前根作为字符串获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31873396/

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