最直接方式是用 go test -run 参数配合正则匹配函数名,如 go test -run ^TestLogin$ 严格匹配 TestLogin 函数,支持子测试路径式匹配如 TestLogin/valid,推荐搭配 -v 和 -failfast 调试。
Go 测试中想只跑某个用例,不用改代码、不依赖 IDE,最直接的方式是用 -run 参数配合正则匹配函数名。
用 go test -run 精确匹配测试函数名
Go 的 go test 命令原生支持通过 -run 过滤测试函数,它接收一个正则表达式,匹配 func TestXXX(t *testing.T) 中的 XXX 部分(不含 Test 前缀)。
常见用法:
-
go test -run TestLogin→ 匹配TestLogin、TestLoginWithToken(因为TestLogin是子串) -
go test -run ^TestLogin$→ 严格匹配仅名为TestLogin的函数(^和$是正则锚点) -
go test -run TestLogin.*Error→ 匹配TestLoginInvalidPasswordError、TestLoginNetworkError -
go test -run 'TestLogin|TestLogout'→ 同时运行两个用例(注意 shell 中单引号防展开)
避免被子测试(subtest)干扰
如果用了 t.Run() 定义子测试(如 t.Run("valid input", ...)),-run 默认只匹配顶层测试函数名,不会自动进入子测试——除非你显式写出完整路径。
要运行某个子测试,必须带上父测试名和斜杠分隔: