go - 如何在指定文件中运行测试用例?

标签 go

如果我运行 go test <package_name>,我的包测试用例分散在多个文件中它运行包中的所有测试用例。

虽然没有必要运行所有这些。有没有办法为 go test 指定文件?运行,以便它只运行文件中定义的测试用例?

最佳答案

有两种方法。最简单的方法是使用 -run 标志并提供与您要运行的测试名称匹配的模式。

例子:

$ go test packageName -run NameOfTest

docs了解更多信息。

请注意,如果 -run 标志包含字符串 NameOfTest,则它们也可以运行其他测试,因为 -run 标志与正则表达式匹配.

所以为了确保只运行一个名为“NameOfTest”的测试, 必须使用正则表达式 ^NameOfTest$:

$ go test -run "^NameOfTest$" 

另一种方法是命名特定文件,其中包含您要运行的测试:

$ go test foo_test.go

但有一个问题。如果满足以下条件,这很有效:

  • foo.gopackage foo 中。
  • foo_test.go 位于 package foo_test 并导入 'foo'。

如果 foo_test.gofoo.go 是同一个包(常见情况),那么您必须命名构建 foo_test。在此示例中,它将是:

$ go test foo_test.go foo.go

我建议使用 -run 模式。或者,在可能的情况下,始终运行所有包测试。

关于go - 如何在指定文件中运行测试用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16935965/

相关文章:

go - 我应该将指针作为参数传递吗

go - 文本/模板 : "can' t call method/function with 0 results. "

mongodb - 总是产生相同哈希的无序 2 字符串哈希函数

go - Chromedp 不在 ActionFunc 的循环内执行操作

go - 由于 "Authentication failed: EOF",Mesos 框架保持不活动状态

vim - 当我使用 Janus vim 处理 golang 文件时,如何在 Vim 中删除此消息?

go - 将结构或指向结构的指针添加到 slice

azure - 可以通过Azure go sdk接收用户信息吗?

golang中的goroutine一个进程错误

go - 将结构接口(interface)转换为相同的结构