运行测试
在文件或文件夹中直接运行测试
如果您的测试在启动前不需要执行任何特定操作,并且不打算配置其他选项,您可以使用以下选项运行它们:
将光标置于测试文件中以运行该文件中的所有测试,或置于测试方法上并按下 Ctrl+Shift+F10。 或者,单击测试方法旁边的
行图标,并从列表中选择 运行 '<test name>'。
行图标会根据测试的状态变化而变化:
行图标表示一组测试。 使用该图标可运行该文件中的所有测试。
行图标表示新建测试。
行图标表示通过的测试。
行图标表示失败的测试。
要运行文件夹中的全部测试,在 项目 工具窗口中选择该文件夹,然后按 Ctrl+Shift+F10 ,或在上下文菜单中选择 在 'folder' 中运行测试。

使用运行小部件运行测试
当您运行测试时,GoLand 会创建一个临时运行配置。 您可以保存临时运行配置、修改其设置并与团队其他成员共享。 如需了解更多信息,请参阅 运行/调试配置。
创建新的 运行配置 或保存一个临时配置。
使用主工具栏上的 Run 小组件选择要运行的配置。
单击
或按下 Shift+F10。

从结构视图中运行测试
在 结构 工具窗口 中,您可以选择一个或多个测试方法进行运行。 在这种情况下,IDE 还会使用这些方法创建一个临时的运行配置,您可以对其进行 保存与编辑。
在 项目 工具窗口中,双击 Go 测试文件(
_test.go)。导航至 。
在 结构 工具窗口中,右键单击一个或多个测试方法并选择
运行 '方法 名称' (Ctrl+Shift+F10)。
在 结构 工具窗口中右键点击某个方法并选择:
如果只有一个包含 模式 测试范围的配置,则选中 添加到临时套件:<Configuration_name>。
如果有多个包含 模式 测试范围的配置,则显示 添加到 JUnit 模式套件 (JUnit)/添加到临时套件 (TestNG)。 在这种情况下,将会弹出一个窗口供您选择目标配置。

GoLand 运行完测试后,会在 运行 工具窗口中的该运行配置标签页显示结果。 如需了解有关分析测试结果的更多信息,请参阅 浏览测试结果。

使用测试标志运行测试
您可以使用测试标志运行测试,例如 -race、 -failfast、 -short 等。 在 pkg.go.dev 上的 Go 文档 中查看其他标志。
导航至 。
单击用于运行应用程序或测试的运行/调试配置。 在 程序参数 字段中指定计划使用的标志:
-race:启用数据竞争检测。 仅在linux/amd64、freebsd/amd64、darwin/amd64、windows/amd64、linux/ppc64le和linux/arm64上受支持(仅适用于 48 位 VMA)。-test.failfast:在第一个测试失败后停止新的测试。-test.short:缩短长时间运行测试的运行时间。-test.benchmem:打印基准测试的内存分配统计信息。

运行项目中的所有测试
在主菜单中,选择 。
单击 添加新配置 图标(
),然后选择 Go 测试。
从 测试类型 下拉列表中选择以下选项之一:
包 :在 包路径 字段中运行所选包的所有测试。
目录 :在 目录 字段中运行所选包的所有测试。
单击 运行。
模糊测试
模糊测试是一种通过持续提交各种输入自动化测试的方法。 输入是根据您在 f.Add("mySampleData") 中提供的示例数据生成的。
f.Add() 可接收以下数据类型: string、 []byte、 rune、 int、 int8、 int16、 int32、 int64、 uint、 uint8、 unit16、 uint32、 uint64、 float32、 float64、 bool。
运行模糊测试
单击边距中的 运行测试 图标,选择 运行(U) ,然后选择模糊测试配置(例如, go test -fuzz FuzzTest)。
如果测试失败,您可以单击指向 testdata 目录的链接,以查看哪个输入导致测试失败。
要使用失败的种子语料项运行 go test,请从 testdata 目录中打开文件,单击边距中的 运行模糊处理 图标,然后选择所需配置。

调试模糊测试
在所需行的边距处单击以创建断点。
或者,单击要创建断点的行并按 Ctrl+F8。
单击 。
在 调试 弹出窗口中,选择所需的运行/调试配置。
提交后运行测试
当您希望在提交更改前确认不会破坏代码时,可以将测试作为提交检查运行来实现。
设置测试配置
按 Alt+0 打开 提交 工具窗口,然后单击 显示提交选项
。
在 高级提交检查 菜单下,在 Run Tests 选项旁边,单击 选择配置 并选择要运行的配置。

配置测试设置后,每次提交时都会运行指定的测试。
停止测试
在运行配置选项卡的 运行 工具栏上使用以下选项:
单击
或按 Ctrl+F2 立刻终止进程。

重新运行测试
重新运行单个测试
在 运行 工具窗口的运行配置选项卡中右键单击测试,然后选择 运行 '测试名称'。
重新运行会话中的所有测试
单击
(位于 运行 工具栏上)或按 Ctrl+F5 重新运行会话中的所有测试。
重新运行失败的测试
单击
(位于 运行 工具栏上)仅重新运行失败的测试。
按住 Shift 并单击
,以选择是否 运行 重新运行失败的测试或 调试 它们。
您可以配置 IDE,使其与失败测试一起触发上次测试运行中被忽略或未启动的测试。 单击
(位于 运行 工具栏上),启用 将未启动的测试包含到重新运行的失败测试中 选项。
自动重新运行测试
在 GoLand 中,您可以启用类似自动测试的运行器:更改相关源代码后,当前运行配置中的任何测试将自动重新启动。
单击
自动重新运行 (位于测试结果工具栏上)以启用类似自动测试的运行器。
调试失败的测试
如果您不知道测试为何失败,可以对其进行调试。
效率提示
运行单个表格测试
您可以使用边距中的 运行 图标(
)运行单个表格测试。 您还可以从 运行 工具窗口导航到单个表格测试。
当前对表格测试的支持存在以下限制:
The test data variable must be a slice, an array, or a map. 必须在与
t.Run调用相同的函数中定义,并且在初始化之后不得再次使用(range条件出现在for循环中的情况除外)。单个测试数据项必须是 struct 字面量。 在子测试名称表达式中使用的循环变量,不得在
t.Run调用之前使用。子测试名称表达式可以是测试数据的字符串字段、测试数据字符串字段的拼接,或是带有
%s和%d占位符的fmt.Sprintf()调用。例如,在以下代码片段中,
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) } }) }

