如何运行指定文件中的测试用例?

新手上路,请多包涵

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

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

原文由 user972946 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

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

例子:

 $ go test packageName -run NameOfTest

有关详细信息,请参阅 文档

请注意,如果 -run 标志还可以运行其他测试,如果它们包含字符串 NameOfTest ,因为 -run 标志与 regexp 匹配。

因此,为了确保只运行名为“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 模式。或者,在可能的情况下/在可能的情况下,始终运行所有包测试。

原文由 zzzz 发布,翻译遵循 CC BY-SA 4.0 许可协议

@zzzz 的答案大部分是完整的,但只是为了避免其他人不得不深入研究参考 文档,您可以在包中运行单个测试,如下所示:

 go test packageName -run TestName

请注意,您要传递测试的名称, 而不是 测试所在的文件名。

-run 标志实际上接受正则表达式,因此您可以将测试运行限制为一类测试。从文档:

 -run regexp
    Run only those tests and examples matching the regular
    expression.

原文由 TomDotTom 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题