如何通过Go语言go test命令行参数精确运行特定测试用例的详细操作步骤?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1098个文字,预计阅读时间需要5分钟。
想要快速验证一个刚修改的测试,但又不想跑完整部测试套件?使用 `go test -run TestName` 是最直接的方法。它支持正则匹配,例如:
常见错误是漏写包路径或进错目录:必须在待测代码所在目录执行,且 TestName 是函数名,不是文件名或方法名。如果测试在子包里,得先 cd 进去,或者用 go test ./subpackage -run TestFoo。
-
-run只匹配测试函数名(func TestXXX(t *testing.T)),不识别结构体方法或普通函数 - 大小写敏感,
testlogin不会匹配TestLogin - 默认不运行被
t.Skip()跳过的用例;加-v才能看到跳过提示
排除某些测试用 -run 配合负向正则
有时候想跑「除了几个不稳定测试之外的所有」,比如跳过集成类或耗时测试。go test -run '^(?!TestLegacy|TestExternalAPI).*$' 就能实现。但注意 Go 的 regexp 包不支持 PCRE 风格的 (?!...),实际要用 go test -run '^(Test(?!Legacy|ExternalAPI).*)$' 这种绕法。
本文共计1098个文字,预计阅读时间需要5分钟。
想要快速验证一个刚修改的测试,但又不想跑完整部测试套件?使用 `go test -run TestName` 是最直接的方法。它支持正则匹配,例如:
常见错误是漏写包路径或进错目录:必须在待测代码所在目录执行,且 TestName 是函数名,不是文件名或方法名。如果测试在子包里,得先 cd 进去,或者用 go test ./subpackage -run TestFoo。
-
-run只匹配测试函数名(func TestXXX(t *testing.T)),不识别结构体方法或普通函数 - 大小写敏感,
testlogin不会匹配TestLogin - 默认不运行被
t.Skip()跳过的用例;加-v才能看到跳过提示
排除某些测试用 -run 配合负向正则
有时候想跑「除了几个不稳定测试之外的所有」,比如跳过集成类或耗时测试。go test -run '^(?!TestLegacy|TestExternalAPI).*$' 就能实现。但注意 Go 的 regexp 包不支持 PCRE 风格的 (?!...),实际要用 go test -run '^(Test(?!Legacy|ExternalAPI).*)$' 这种绕法。

