使用 go.work 文件在多个测试文件上运行 go test 命令

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

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

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

如何在“go.work”文件上使用“go test”命令?

假设我有一个包含两个子目录的目录,每个子目录都有一个 go.mod 文件和两个 .go 源文件(file.go 和 file_test.go),主目录只有 go.work 文件。

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

go test  ".\ ..." --> 没有按规定工作,无法正确解析。

该标志build.experimentalWorkspaceModule设置为 false,因为不再需要它。似乎go test all可行,但我只想测试我的包,而不是安装的整个包。

我研究了整个文档,找不到示例,因为它似乎是新的并且不经常使用,pkg.go.dev 不提供信息。

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


30秒到达战场
浏览 150回答 1
1回答

慕侠2389804

我认为不能go.work用于此目的。工作区是模块系统的一部分,基本上用于使(对您而言)更容易设置本地多模块存储库。以下引述来自提案:go.work 文件指定了一组组成工作区的本地模块。在工作区模式下调用时,go 命令将始终选择这些模块和一组一致的依赖项。这是工作区教程中的一个:go.work可以使用而不是添加replace指令来跨多个模块工作。最后这个来自官方文档:工作区是磁盘上的模块集合,在运行最小版本选择 (MVS) 时用作主要模块。同时运行多个模块的测试套件与 go.work 的用例是正交的。为此,您仍然必须使用 shell 脚本(请参阅在多个 go 模块的父目录中运行 `go test`)或类似脚本。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go