Abh*_*kar -2 unit-testing go go-modules
我正在学习 Go,专业是用 Google Go 进行编程。它有几门课程,每门课程都有几个模块。
\n我的项目如下所示(使用https://ascii-tree-generator.com/制作制作):
\ngoogle-golang/\n\xe2\x94\x9c\xe2\x94\x80 .github/\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 workflows/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 ci.yml\n\xe2\x94\x9c\xe2\x94\x80 golang-getting-started/\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 module1/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 main.go\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 main_test.go\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 module2/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 trunc/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 main.go\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 main_test.go\n\xe2\x94\x9c\xe2\x94\x80 .gitignore\n\xe2\x94\x9c\xe2\x94\x80 README.md\nRun Code Online (Sandbox Code Playgroud)\n我想为*_test.go每次提交运行文件中的所有测试,但我不清楚如何从根目录 ( google-golang) 执行此操作。我认为不需要一个模块导入另一个模块,因为练习可以独立完成。这个问题有两个答案,一个建议使用子模块,另一个建议使用Go工作区,但都没有提供像我这样的新手可以学习的具体说明。
我不是在 GitHub Actions 上寻求帮助,我知道如何编写这些内容。我正在寻找一个或多个可以查找并运行测试的命令。
\n您似乎对模块是什么感到困惑。经验法则是,一个go.mod文件等于一个模块。去维基,gomod:
\n\n模块由 Go 源文件树定义,树的根目录中有一个 go.mod 文件。
\n
根据问题中显示的目录树,看不到go.mod文件,因此没有 Go 模块。事实上,如果您尝试运行模块感知命令,google-golang或者golang-getting-started您将拥有:
\n\ngo: 在当前目录或任何父目录中找不到 go.mod 文件;请参阅“转到帮助模块”
\n
如果您想从多模块存储库的根运行所有测试,正如问题标题所示,使用 Go 1.17 您可以:
\n$ cd google-golang/golang-getting-started/module1\n$ go mod init example.com/module1\n$ cd ../module2\n$ go mod init example.com/module2\nRun Code Online (Sandbox Code Playgroud)\n$ cd google-golang\n$ find . -name go.mod -execdir go test ./... \\;\nRun Code Online (Sandbox Code Playgroud)\n如果您实际上并不关心将子存储库保留为单独的模块,则可以在根存储库中初始化一个模块并从那里运行所有测试:
\n$ cd google-golang # or google-golang/golang-getting-started/\n$ go mod init example.com/mainmod\n$ go test ./...\nRun Code Online (Sandbox Code Playgroud)\n...然而,即使这个黑客现在有效,它也没有多大意义,因为您的存储库命名为每个文件中moduleN都有main.go文件,其包据称被命名为。main所以它们确实被组织为单独的子模块。
| 归档时间: |
|
| 查看次数: |
2178 次 |
| 最近记录: |