我的包测试用例分散在多个文件中,如果我运行 go test <package_name>
它会运行包中的所有测试用例。
虽然没有必要运行所有这些。有没有办法为 go test
运行指定一个文件,以便它只运行文件中定义的测试用例?
原文由 user972946 发布,翻译遵循 CC BY-SA 4.0 许可协议
我的包测试用例分散在多个文件中,如果我运行 go test <package_name>
它会运行包中的所有测试用例。
虽然没有必要运行所有这些。有没有办法为 go test
运行指定一个文件,以便它只运行文件中定义的测试用例?
原文由 user972946 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答1.3k 阅读
2 回答1.2k 阅读
2 回答1.2k 阅读
2 回答1.1k 阅读
3 回答759 阅读
2 回答931 阅读
1 回答830 阅读
有两种方法。最简单的方法是使用
-run
标志并提供与您要运行的测试名称匹配的模式。例子:
有关详细信息,请参阅 文档。
请注意,如果
-run
标志还可以运行其他测试,如果它们包含字符串NameOfTest
,因为-run
标志与 regexp 匹配。因此,为了确保只运行名为“NameOfTest”的测试,必须使用正则表达式
^NameOfTest$
:另一种方法是命名特定文件,其中包含您要运行的测试:
但有一个陷阱。这在以下情况下效果很好:
foo.go
在package foo
中。foo_test.go
位于package foo_test
并导入“foo”。如果
foo_test.go
和foo.go
是同一个包(常见情况),那么您必须命名构建所需的所有其他文件foo_test
在这个例子中它将是:我建议使用
-run
模式。或者,在可能的情况下/在可能的情况下,始终运行所有包测试。