从GO 1.18开始,可以使用"go.work"文件作为多模块工作区保存文件,相当于"go.mod"文件.

我想知道如何使用命令go test中定义的"go.work"文件.

我try 了多种方法.当我打印go.work环境变量时,一切似乎都正常.

如何对"go.work"文件使用"go test"命令?

假设我有一个目录,其中有两个子目录,每个子目录都有一个go.mod文件和两个.go源文件(file.go和filest.go),主目录中只有go.work文件.

go test -v .\go.work-->不可能

go test ".\ ..."-->未按指定方式工作,无法正确解析它.

标志build.experimentalWorkspaceModule被设置为假,因为它不再需要.只有go test all似乎可以工作,但我只想测试我的包,而不是安装的整个包.

我翻遍了整个文档,我找不到一个例子,因为它似乎是新的,不经常使用,pkg.go.dev没有提供信息.

也不在这里https://go.googlesource.com/tools/+/refs/heads/master/gopls/doc/workspace.md

推荐答案

我不认为go.work可以用来达到这个目的.工作区是模块系统的一部分,主要用于简化local多模块存储库的设置.以下引语摘自proposal:

Go.work文件指定了组成一个工作区的一组local modules个元素.在工作区模式下调用时,Go命令将始终 Select 这些模块和一组一致的依赖项.

以下是工作空间教程中的一条:

可以使用go.work条指令而不是添加replace条指令来跨多个模块工作.

最后是official docs人中的这一位:

工作空间是在运行最小版本 Select (MV)时用作主模块的模块on disk的集合.

同时运行多个模块的测试套件与Go.work的用例是正交的.为此,您仍然必须使用shell 脚本(参见Running `go test` in parent directory of multiple go modules)或类似的脚本.

Go相关问答推荐

如果添加构建标签,gopls将停止工作

如何修复在Go API中使用Gin Framework的请求资源上没有使用Gin Framework的请求源的消息?''

Pulumi-S3-当策略依赖于访问点时,如何将AccesspintPolicy附加到访问点

CGO如何转换为文件*类型

如何描述OpenAPI规范中围棋的数据类型.JSON?

如何在jsonrpc服务器的服务器端捕获错误?

迭代字符串并用映射值替换原始字符串中的值的惯用方法

go中跨域自定义验证的问题

正确的 shell 程序进入 golang alpine docker 容器的入口点?

有没有办法计算枚举中定义的项目总数?

go - 仅在函数即将返回错误时清理资源

访问传递给可变参数函数的通用 struct 的特定字段

确保 Go 1.20 编译时的严格可比性?

为什么 0 big.Int 的 .Bytes() 值是空切片?

使用反射在 struct 内迭代切片 struct

转到文本/模板模板:如何根据模板本身的值数组判断值?

如何正确为 Go 中的值设置多种类型?

为什么 go.mod 中的所有依赖都是间接的?

如何解决在mac m1中运行gcc失败退出状态1?

如何从应用程序调用谷歌云身份 API