在多个go模块的父目录中运行'go test'

6jjcrrmo  于 2022-12-07  发布在  Go
关注(0)|答案(2)|浏览(164)

请看下面的目录结构:

/root
    /one
        go.mod
        go.sum
        main.go
        main_test.go
    /two
        go.mod
        go.sum
        main.go
        main_test.go

假设我在父目录root/中,我想运行所有子目录中的所有测试。我该怎么做?我已经尝试了go test./...,并得到了以下错误:

go: warning: "./..." matched no packages
no packages to test
vbkedwbf

vbkedwbf1#

是的,这对go test不起作用,go test期望对根目录在当前目录或其父目录中的单个模块起作用。它也不对嵌套模块起作用。
你需要一个shell技巧,比如使用find或者其他类似的东西来在每个模块中执行(例如,请参见Cerise Limón的注解)。
一个larger project I was working on有一个它所有模块的列表(https://github.com/google/go-cloud/blob/master/allmodules),然后有几个脚本在这个列表上运行。例如,test script只是在这个文件中循环,并对每个目录运行go test,沿着其他东西。
您不一定需要一个单独的文件来列出模块(go-cloud项目将其用于其他管理任务),但它只是演示了具有多个模块的大型项目处理事情的一种方式。

vsikbqxv

vsikbqxv2#

推广@Cerise Limón的评论回答:

find . -name go.mod -execdir go test ./... \;

相关问题