在多个 Go 模块的父目录中运行 go test
当遇到子目录中有多个 Go 模块的目录结构时,运行 go test从父目录中获取可能会带来挑战。下面的代码片段演示了这个问题:
/root /one go.mod go.sum main.go main_test.go /two go.mod go.sum main.go main_test.go
从根目录运行 go test./... 将导致错误:
go: warning: "./..." matched no packages no packages to test
出现这种情况是因为 go test 是专门设计用于对位于当前目录或其父目录中的单个模块进行操作。它不支持嵌套模块或从多个模块的父目录执行测试。
要解决此问题,解决方案是创建 shell 脚本或使用 find 之类的实用程序导航到每个单独的模块并执行 go在这些目录中进行测试。例如:
cd /root/one go test . cd /root/two go test .
或者,某些项目可能会利用 Makefile 或 test.sh 脚本来自动执行此过程。例如,以下假设项目中的 test.sh 脚本循环遍历模块列表并为每个目录运行 go test:
#!/bin/bash modules="one two three" for module in $modules; do cd $module go test . cd .. done
以上是如何在多个Go模块的父目录中运行'go test”?的详细内容。更多信息请关注PHP中文网其他相关文章!