【GoLand教程】GoLand 运行选定的测试或测试文件夹

运行选定的测试或测试文件夹:Ctrl+Shift+F10
停止当前的测试会话:Ctrl+F2
快捷方式
如果您的测试在开始之前不需要任何特定操作并且您不想配置其他选项,则可以使用以下选项运行它们:
- 将插入符号放在测试文件上以运行该文件中的所有测试,或放在测试方法上,然后按Ctrl+Shift+F10。或者,单击测试方法旁边的装订线图标。
装订线图标会根据测试的状态而变化:
装订线图标标记新测试。
装订线图标标志着成功的测试。
装订线图标标记失败的测试。
- 要运行文件夹中的所有测试,请在“项目”工具窗口中选择此文件夹,然后从上下文菜单中按Ctrl+Shift+F10或选择“文件夹”中的运行测试。
可定制的方式
当您运行测试时,GoLand 会创建一个临时运行配置。您可以保存临时运行配置、更改它们的设置、与团队的其他成员共享它们。
- 创建一个新的运行配置或保存一个临时配置。
- 从主工具栏上的列表中,选择要运行的配置。
- 单击
或按Shift+F10。
启用Run工具栏上的Pin Tab
选项以在单独的选项卡中打开每个测试运行的结果。
GoLand 完成运行测试后,它会在Test Runner选项卡上的Run工具窗口中显示结果。
使用测试标志运行测试
您可以使用 、 、 等测试标志-race
运行-failfast
测试-short
。检查pkg.go.dev 的 Go 文档中的其他标志。
- 导航到运行 | 编辑配置。
单击用于运行应用程序或测试的运行/调试配置。在Go 工具参数字段中,指定您计划使用的标志:
-race
:启用数据竞争检测。linux/amd64
仅在、freebsd/amd64
、darwin/amd64
、windows/amd64
和linux/ppc64le
上受支持linux/arm64
(仅适用于 48 位 VMA)。-test.failfast
:在第一次测试失败后停止新的测试。-test.short
:缩短长时间运行测试的运行时间。-test.benchmem
:打印基准测试的内存分配统计信息。
提交前运行测试
如果您想在提交之前检查您的更改是否不会破坏代码,您可以通过运行测试作为提交前检查来做到这一点。
此功能仅适用于 Git 和 Mercurial。
设置测试配置
按照以下主题中的说明打开提交工具窗口:
- Git
- Mercurial
- 单击显示提交选项
。在菜单中,单击Run Tests附近的选择配置,然后选择要运行的配置。
设置好测试配置后,每次提交时都会运行指定的测试。
停止测试
使用Test Runner选项卡的Run工具栏上的以下选项:
- 单击
或按下Ctrl+F2可立即终止进程。
重新运行测试
重新运行单个测试
- 右键单击Run工具窗口的Test Runner选项卡上的测试,然后选择Run 'test name'。
重新运行会话中的所有测试
- 单击
“运行”工具栏或按Ctrl+F5以重新运行会话中的所有测试。
重新运行失败的测试
- 单击
“运行”工具栏以仅重新运行失败的测试。
按住Shift并单击以选择是否要再次运行测试或调试它们。
您可以将 IDE 配置为触发在上一次测试运行期间被忽略或未启动的测试以及失败的测试。单击Test Runner工具栏并启用Include Non-Started Tests into Rerun Failed选项。
自动重新运行测试
在 GoLand 中,您可以启用类似自动测试的运行器:当前运行配置中的任何测试都会在您更改相关源代码后自动重新启动。
- 单击“运行”工具栏上的“
切换自动测试”以启用类似自动测试的运行器。
调试失败的测试
如果您不知道测试失败的原因,您可以对其进行调试。
- 在编辑器中,单击要设置断点的行上的装订线。
根据要暂停程序的位置,可以使用不同类型的断点。
- 右键单击
失败测试旁边的装订线图标,然后选择Debug 'test name'。
失败的测试将在调试模式下重新运行。之后,测试将暂停,让您检查其当前状态。
您可以逐步完成测试以详细分析其执行情况。
为测试运行运行/调试配置
要为测试运行运行/调试配置,您必须创建运行/调试配置。在Run/debug configuration templates for testing中阅读有关为测试创建运行/调试配置的信息。
- 单击编辑运行/调试配置列表并选择要运行的配置。
- 单击运行按钮
。
从gutter运行测试
当您从装订线运行测试时,您会创建一个临时运行/调试配置。要保存此配置,请导航至运行 | 编辑配置,选择配置列表中的灰色项,然后单击保存配置按钮。
- 单击装订线中的运行测试图标
。
- 选择运行 <configuration_name>。
从上下文菜单运行测试
- 右键单击测试文件或包含测试文件的目录,然后选择运行 | 去测试 <object_name>(对于目录)或运行 <object_name>(对于文件)。
生产力提示
运行单个表测试
- 您可以使用装订线中的运行图标 ( )运行单个表测试。此外,您可以从“运行”工具窗口
导航到单个表测试。
当前对表测试的支持具有以下限制:
- 测试数据变量必须是切片、数组或映射。它必须在与
t.Run
调用相同的函数中定义,并且不能在初始化后使用(循环中的range
子句除外)。for
- 单独的测试数据条目必须是结构文字。
t.Run
在调用之前不得使用子测试名称表达式中使用的循环变量。 子测试名称表达式可以是测试数据字符串字段、测试数据字符串字段的串联或与和动词的
fmt.Sprintf()
调用。%s
`%d`例如,在下面的代码片段中,
fmt.Sprintf("%s in %s", tc.gmt, tc.loc)
是一个子测试名称表达式。for _, tc := range testCases { t.Run(fmt.Sprintf("%s in %s", tc.gmt, tc.loc), func(t *testing.T) { loc, err := time.LoadLocation(tc.loc) if err != nil { t.Fatal("could not load location") } gmt, _ := time.Parse("15:04", tc.gmt) if got := gmt.In(loc).Format("15:04"); got != tc.want { t.Errorf("got %s; want %s", got, tc.want) } }) }