【问题标题】:Why does `go test -run NotExist` pass?为什么 `go test -run NotExist` 通过?
【发布时间】:2016-11-22 15:33:34
【问题描述】:

如果我运行以下命令

go test -run NotExist

响应为通过。看到我的测试文件不包含名为 TestNotExist 的测试,我希望上面的命令返回 FAIL

【问题讨论】:

  • 因为您指定的所有测试都没有,通过,或者换句话说,您没有测试失败。
  • 这种行为真的没有意义,我希望它会说“未找到测试'NotExist'”
  • 这只是每个人都同意的行为。这通常是您在不执行任何测试的情况下运行基准测试或检查测试编译错误的方式。

标签: unit-testing testing go


【解决方案1】:

没有-run 选项go test 运行所有测试。您使用-run 选项不运行所有测试过滤掉排除测试(并且你以要求非排除测试名称的形式匹配 一个正则表达式模式 - 但这与讨论点无关):

Command go, Test packages:

默认情况下,go test 不需要参数。它使用当前目录中的源代码编译和测试包,包括测试,并运行测试。

Description of testing flags:

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

过滤过滤掉所有测试是一个完全“正常”的结果,在仍然需要执行的测试集中没有任何测试。

当没有测试失败时,它被认为是测试运行通过。如果没有匹配的测试,则不会运行任何测试,也不会有任何测试失败,因此测试运行将通过。

【讨论】:

  • 再次考虑这个行为确实是有道理的。我听说它说你不能证明没有错误。您只能测试它们的存在。如果没有明确失败,则假设它正在工作。让我烦恼的是,如果我在命令中输入了错字,我将不会收到警告。
  • @mozey 同意。但是一个简单的go test 会显示错误,这就是您应该用来测试/验证的内容。如果您想快速测试一些更改,您应该只使用-run 选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-17
  • 1970-01-01
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
  • 2020-07-06
  • 1970-01-01
相关资源
最近更新 更多