如何在 Golang 项目中运行所有文件名符合 *_unit_test.go 命名约定的测试?

huangapple go评论73阅读模式
英文:

How to run all the tests specified in files with a naming convention like *_unit_test.go in a Golang project?

问题

我在 CI 上运行一个大型项目的 Go 测试。完成测试大约需要 30 分钟。对于某些分支,我只需要运行 *_unit_test.go 文件中的测试。

go test -run 接受测试名称的正则表达式,而不是文件名。
如果我们传递单个文件(1_unit_test.go),需要同时传递依赖的 Go 文件。
如果我们使用构建标签,需要将它们添加到所有的测试中,以便控制可以运行什么。

英文:

I run go tests for a large project on ci. It takes around 30mins to complete. For some branches, I just need to run tests in *_unit_test.go file.

go test -run takes a regexp of the test name not file names.
if we pass individual files(1_unit_test.go) need to pass the dependant go files along with it.
if we use build tags, need to add them to all the tests to have control over what can be run.

答案1

得分: 2

如何在Go项目中运行所有文件名符合 *_unit_test.go 命名约定的测试?

你不能直接运行所有符合该命名约定的测试。

正如你已经发现的那样,你可以在实际的测试函数上使用命名约定,或者使用构建标签,在某些条件下(如标志或环境变量)基于 t.Skip 来跳过测试。

英文:

> How to run all the tests specified in files with a naming convention like *_unit_test.go in a Go[...] project?

You cannot.

As you already discovered you either have to use naming conventions on the actual Tests, use build tags or skip tests pragmatically via t.Skip based on some condition (like flags or environment variables).

huangapple
  • 本文由 发表于 2023年6月22日 14:24:08
  • 转载请务必保留本文链接:https://go.coder-hub.com/76529076.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定