You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用单条命令运行Go工作区中多模块的测试用例?

在Go工作区中运行多模块测试的方法

工作区代码结构

test$ ls -lR
.:
total 1824
drwxrwxr-x 3 user user    4096 Nov  8 10:55 cmd
drwxrwxr-x 2 user user    4096 Nov  8 11:07 compute
-rw-rw-r-- 1 user user      40 Nov  8 10:54 go.work
-rwxrwxr-x 1 user user 1846984 Nov  8 11:04 main
-rw-rw-r-- 1 user user     183 Nov  8 11:05 Makefile
-rw-rw-r-- 1 user user      13 Nov  8 08:59 Readme.md

./cmd:
total 4
drwxrwxr-x 2 user user 4096 Nov  8 10:49 user

./cmd/user:
total 8
-rw-rw-r-- 1 user user  49 Nov  8 10:49 go.mod
-rw-rw-r-- 1 user user 132 Nov  8 10:57 main.go

./compute:
total 16
-rw-rw-r-- 1 user user 339 Nov  8 09:58 fib.go
-rw-rw-r-- 1 user user 204 Nov  8 11:10 fib_test.go
-rw-rw-r-- 1 user user 239 Nov  8 11:07 go.mod
-rw-rw-r-- 1 user user 881 Nov  8 11:07 go.sum
test$ 
test$ pwd
/home/user/git/test
test$  go version
go version go1.20.2 linux/amd64

测试用例构建标签

所有测试文件都包含以下构建标签:

//go:build unit
// +build unit

单个模块测试示例

运行./compute模块的测试时,需指定模块路径,示例如下:

test$ make test
go test -v -race -tags=unit -cover ./compute
=== RUN   TestZeroeth
--- PASS: TestZeroeth (0.00s)
PASS
        github.com/whatever/test/compute coverage: 100.0% of statements
ok      github.com/whatever/test/compute (cached)        coverage: 100.0% of statements
test$

问题

如何用单条命令运行工作区中所有模块的测试用例?在未使用Go工作区时,我们曾使用命令:test$ go test -tags=unit -cover ./...


解决方案

在Go工作区中,你可以直接沿用类似无工作区时的命令,在工作区根目录执行:

go test -tags=unit -cover ./...

Go工作区会自动识别go.work文件中包含的所有模块,./...通配符会遍历工作区内所有模块并执行测试。如果需要指定特定模块,也可以列出模块路径:

go test -tags=unit -cover ./cmd/user ./compute

只要go.work文件已正确包含所有需要测试的模块(从当前代码结构看,cmd/user和compute模块都已在工作区内),上述命令就能一次性运行所有符合构建标签的测试用例。


内容的提问来源于stack exchange,提问作者user1787812

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 16:05:24