Ctrl+Shift+F10运行当前测试函数需光标位于func TestXXX签名上;Ctrl+4重跑最近一次测试命令;Debug须先设断点再启动;调试并发需开启Show Goroutines开关。

Ctrl+Shift+F10 运行当前测试函数,但光标必须在函数名上
GoLand 不会根据你正在看的代码行自动推断要运行哪个测试——它只认函数签名位置。按 Ctrl+Shift+F10(macOS 是 Cmd+Shift+F10)前,光标必须停在 func TestXXX 的 TestXXX 上(不能在花括号里、不能在注释中、不能在调用处)。否则会弹出“no test found”或直接运行整个包。
常见误操作包括:
- 光标停在
t.Run("valid", func(t *testing.T) { ... })里的字符串里 → 触发的是子测试,不是函数级运行 - 停在
func (t *testing.T)参数列表中 → IDE 无法识别为测试入口 - 文件没保存,或
_test.go后缀写成.go→ 编译失败,快捷键静默失效
Ctrl+4 重跑最近一次测试,适合改完就验证
Ctrl+4(macOS 是 Cmd+4)是真正高频的调试节奏键:它不关心光标在哪,只复用上一次 go test 命令的完整参数(包括 -run、-v、-count=1 等)。改完一行断言或输入后,按一下就能看到结果,不用重新选配置。
但它有个隐藏前提:
- 必须至少手动运行过一次测试(哪怕失败),否则没有“最近一次”可复用
- 如果上次运行的是
go test ./...全量命令,这次Ctrl+4也会全量跑,可能慢;建议先用Ctrl+Shift+F10跑单个函数建立上下文 - 若测试因 panic 或 timeout 中断,
Ctrl+4仍会沿用原参数重试,不会自动加-count=1防缓存
Debug 模式下进测试函数,得手动加断点 + Ctrl+D
GoLand 默认不把测试函数当“可调试入口”,直接按 Ctrl+D(macOS Cmd+D)会报错 “No executable code found”。正确路径是:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 先在测试函数内部某行(比如
got := MyFunc(input))左侧灰色区域单击,打上断点 - 再按
Ctrl+Shift+F10或右键 → Debug ‘TestXXX’ - 断点命中后,才能用
F7(Step Into)、F8(Step Over)逐行跟进被测函数
注意:F9(Resume)在测试里容易跳过关键逻辑——因为 Go 测试框架会在 t.Run 内部做封装,断点设在子测试外层时,F9 可能直接跳到下一个 t.Run,而不是你期望的被测函数内部。
想看 goroutine 并发状态?必须开 Show Goroutines 开关
调试带 go 关键字或 channel 的测试时,仅靠普通 Debug 视图看不到其他协程。默认 Frames 面板只显示当前 goroutine,其他并发路径完全不可见。
必须主动点击 Debug 窗口右上角的 Show Goroutines 按钮(图标是两个交错圆圈),或按快捷键 Ctrl+Shift+G(Windows/Linux)/Cmd+Shift+G(macOS)。开启后,Frames 顶部才出现 Goroutines 标签页。
这时要注意:
- 每个 goroutine 的栈顶如果是
runtime.goexit,说明它已启动但还没执行到你的函数——往下翻两行才能看到真实入口 - 鼠标悬停在 goroutine 条目上,会显示启动位置(如
service_test.go:87),这是区分多个匿名go func()的唯一可靠依据 - 如果 goroutine 列表为空,先检查 Delve 是否用了
--api-version=2启动(GoLand 2023.3+ 默认启用,旧版需手动配置)

















