为了账号安全,请及时绑定邮箱和手机立即绑定

去测试:只运行包含构建标签的测试?

去测试:只运行包含构建标签的测试?

Go
明月笑刀无情 2023-06-01 14:56:50
我有一组长时间运行的测试,用构建标签定义。例如,// file some_test.go//+build func_test(rest of file with test cases)我还有许多其他较短的运行测试,没有这个构建标志。有没有一种方法可以让我轻松地只运行包含构建标签“func_test”的测试?请注意,如果我只是运行go test -tags func_test,它会运行所有测试,包括some_test.go.
查看完整描述

2 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

根据 golang 文档https://golang.org/pkg/go/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 注释。


查看完整回答
反对 回复 2023-06-01
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

您可以按照惯例命名您的测试。即让您的长时间运行的测试功能从开始TestLong_ 然后运行它们 go test ./... -run TestLong -tags func_test



查看完整回答
反对 回复 2023-06-01
  • 2 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信