我正在学习如何使用专业化的用Google编程。它有几门课程,每门课程都有几个模块。
我的项目如下所示(用https://ascii-tree-generator.com/制作):
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操作方面寻求帮助,我知道如何编写这些操作。我正在寻找一个或多个命令来查找和运行测试。
发布于 2021-12-06 09:54:49
你似乎对模块是什么感到困惑。经验法则是,一个go.mod文件等于一个模块。去维基吧,哥莫德
一个模块是由一个Go源文件树定义的,该树的根目录中有一个go.mod文件。
根据问题中所示的目录树,没有go.mod文件在望,因此没有一个Go模块。事实上,如果您尝试从google-golang或golang-getting-started运行一个模块感知的命令,您将拥有:
go:在当前目录或任何父目录中找不到go.mod文件;请参见“go帮助模块”
如果您想从多模块回购的根上运行所有测试,正如问题的标题所示,使用Go 1.17可以:
$ cd google-golang/golang-getting-started/module1
$ go mod init example.com/module1
$ cd ../module2
$ go mod init example.com/module2$ cd google-golang
$ find . -name go.mod -execdir go test ./... \;如果您实际上并不关心将子repos保持为单独的模块,则可以在根回购中插入一个模块,然后从那里运行所有测试:
$ cd google-golang # or google-golang/golang-getting-started/
$ go mod init example.com/mainmod
$ go test ./......however,即使这个黑客现在也起作用了,它没有多大意义,因为您的repos名为moduleN,在每个文件中都有main.go文件,这些文件的包应该被命名为main。因此,它们确实是作为单独的子模块组织起来的。
https://stackoverflow.com/questions/70242784
复制相似问题