【发布时间】:2016-06-11 20:16:01
【问题描述】:
我刚刚偶然发现了一个让我感到好奇的情况。我花了半个小时弄清楚为什么go test -run testWrittenWithSmallT 没有执行我的测试。除了我用一个小的 t 而不是 T 拼写之外,我注意到如果给定的测试方法不存在,go test 通过。
背景知识:最初我想知道为什么我的测试没有将fmt.Println 打印到stdout,或者至少我认为这是错误。过了一会儿我才发现测试根本没有执行。
所以我想知道,有什么理由应该默默地过去吗?
示例go 文件:
package helloworld
import(
"fmt"
"testing"
)
func testWithSmallT(t *testing.T) {
fmt.Println("test with small t executed")
}
func TestWithCapitalT(t *testing.T) {
fmt.Println("test with capital T executed")
}
测试结果:
$go test -run testWithSmallT
PASS
ok starsheriff.net/helloworld 0.004s
$go test -run TestWithCapitalT
test with capital T executed
PASS
ok starsheriff.net/helloworld 0.003s
$go test -run TestDoesNotExist
PASS
ok starsheriff.net/helloworld 0.004s
【问题讨论】:
-
在旁边:添加 -v 以获取您的测试的 fmt.Println
-
是的,我通常会这样做。我真的很喜欢
t.Log()和t.Logf()方法!此处省略,因为它对示例没有影响。 -
好吧,使用
-run标志,您可以明确选择要运行的测试。如果选择none,我认为不执行任何测试而不引发任何错误是正确的。 -
否则无法执行基准测试,因为在这种情况下您必须关闭测试。
标签: unit-testing testing go