如何在指定的文件中运行testing用例?

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

尽pipe如此,没有必要运行它们。 有没有办法指定一个文件go test运行go test ,以便它只运行文件中定义的testing用例?

有两种方法。 简单的方法是使用-run标志并提供一个匹配你想要运行的testing的名字的模式。

例如: $ go test -run NameOfTest 。 有关更多信息,请参阅文档 。

另一种方法是命名特定的文件,包含要运行的testing:

 $ go test foo_test.go 

但有一个问题。 这个效果很好,如果

  • foo.go是包foo
  • foo_test.go是包foo_test并导入'foo'。

如果'foo_test.go'和'foo.go'是同一个包(通常的情况),那么你必须命名构build'foo_test'所需的所有其他文件。 在这个例子中它将是:

 $ go test foo_test.go foo.go 

我build议使用名称模式。 或者,在可能的情况下,始终运行所有包装testing。

@ zzzz的答案大部分都是完整的,但是为了避免其他人从引用的文档中挖掘出来,您可以在一个包中运行一个单独的testing,如下所示:

 go test packageName -run TestName 

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

-run标志实际上接受一个正则expression式,所以你可以限制testing运行到一个testing类。 从文档:

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

在intelliJ IDEA go-lang插件(我假设在jetbrains Gogland中),你可以在运行>编辑configuration下将testingtypes设置为文件

截图创建去测试去文件