首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在多模块Go项目中运行测试

如何在多模块Go项目中运行测试
EN

Stack Overflow用户
提问于 2021-12-06 08:41:37
回答 1查看 776关注 0票数 -2

我正在学习如何使用专业化的用Google编程。它有几门课程,每门课程都有几个模块。

我的项目如下所示(用https://ascii-tree-generator.com/制作):

代码语言:javascript
复制
google-golang/
├─ .github/
│  ├─ workflows/
│  │  ├─ ci.yml
├─ golang-getting-started/
│  ├─ module1/
│  │  ├─ main.go
│  │  ├─ main_test.go
│  ├─ module2/
│  │  ├─ trunc/
│  │  │  ├─ main.go
│  │  │  ├─ main_test.go
├─ .gitignore
├─ README.md

*_test.go --我想为每个提交运行文件中的所有测试,而且我不清楚如何从根目录(google-golang)执行这些测试。我不认为需要一个模块导入另一个模块,因为练习可以独立完成。这个问题有两个答案,一个建议使用子模块,另一个建议使用Go工作区,但它们都没有提供像我这样的新手可以学习的具体说明。

我不是在GitHub操作方面寻求帮助,我知道如何编写这些操作。我正在寻找一个或多个命令来查找和运行测试。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-06 09:54:49

你似乎对模块是什么感到困惑。经验法则是,一个go.mod文件等于一个模块。去维基吧,哥莫德

一个模块是由一个Go源文件树定义的,该树的根目录中有一个go.mod文件。

根据问题中所示的目录树,没有go.mod文件在望,因此没有一个Go模块。事实上,如果您尝试从google-golanggolang-getting-started运行一个模块感知的命令,您将拥有:

go:在当前目录或任何父目录中找不到go.mod文件;请参见“go帮助模块”

如果您想从多模块回购的根上运行所有测试,正如问题的标题所示,使用Go 1.17可以:

  1. 在它的子模块:
代码语言:javascript
复制
$ cd google-golang/golang-getting-started/module1
$ go mod init example.com/module1
$ cd ../module2
$ go mod init example.com/module2
  1. 从多模块项目的根dir中使用塞丽斯·利蒙的诡计
代码语言:javascript
复制
$ cd google-golang
$ find . -name go.mod -execdir go test ./... \;

如果您实际上并不关心将子repos保持为单独的模块,则可以在根回购中插入一个模块,然后从那里运行所有测试:

代码语言:javascript
复制
$ cd google-golang # or google-golang/golang-getting-started/
$ go mod init example.com/mainmod
$ go test ./...

...however,即使这个黑客现在也起作用了,它没有多大意义,因为您的repos名为moduleN,在每个文件中都有main.go文件,这些文件的包应该被命名为main。因此,它们确实是作为单独的子模块组织起来的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70242784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档