我有一组使用build标记定义的长期运行的测试。例如,
// file some_test.go
//+build func_test
(rest of file with test cases)
我还有许多其他较短的运行测试,而没有这个build标志。 有没有办法我可以轻松地仅运行包含构建标记“ func_test”的测试?
请注意,如果我只运行go test -tags func_test
,它将运行所有测试,包括some_test.go
中的测试。
答案 0 :(得分:1)
按照golang文档https://golang.org/pkg/go/build/
build标签列出了将文件包含在软件包中的条件。因此,如果只想对构建标记func_test运行测试,则需要为其他测试提供一个不同的标记。
这里是一个示例: 我的测试目录中有以下2个测试文件。
func_test.go
//+build test_all func_test
package go_build_test
import (
"fmt"
"testing"
)
func TestNormal(t *testing.T) {
fmt.Println("testing:", t.Name())
}
other_test.go
//+build test_all,!func_test
package go_build_test
import "testing"
import "fmt"
func TestOtherCase(t *testing.T) {
fmt.Println("testing:", t.Name())
}
现在,如果要运行所有测试。
$ go test -tags=test_all
testing: TestNormal
testing: TestOtherCase
PASS
ok _/D_/Project/ARC/source/prototype/go/src/go-build-test 0.186s
仅运行func_test
$ go test -tags=func_test
testing: TestNormal
PASS
ok _/D_/Project/ARC/source/prototype/go/src/go-build-test 1.395s
诀窍是使用带有AND / OR条件的// + build注释。
答案 1 :(得分:0)
您可以按照惯例命名您的测试。
即让您长时间运行的测试函数以 TestLong_
开头
然后运行它们
go test ./... -run TestLong -tags func_test
答案 2 :(得分:-3)
在=
之后需要-tags
标记
go test -tags=func_test