程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 go test 跳过一些测试大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 go test 跳过一些测试?

开发过程中遇到使用 go test 跳过一些测试的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 go test 跳过一些测试的解决方法建议,希望对你解决使用 go test 跳过一些测试有所启发或帮助;

你可以使用+build标签

┌─ oneofone@Oa [/t/tst-tag]                                                                                                      
└──➜ ls
a_test.go  b_test.go  c_test.go

package Tags

import "tesTing"

func TestA(t *tesTing.T) {}

// +build !feature1

package Tags

import "tesTing"

func TESTB(t *tesTing.T) {}

// +build !feature1
// +build !feature2

package Tags

import "tesTing"

func @R_489_8932@(t *tesTing.T) {}

然后使用-Tags参数运行测试:

┌─ oneofone@Oa [/t/tst-tag]                                                                                                      
└──➜ go test -v . | grep PASS:
--- PASS: TestA (0.00 seconds)
--- PASS: TESTB (0.00 seconds)
--- PASS: @R_489_8932@ (0.00 seconds)
┌─ oneofone@Oa [/t/tst-tag]                                                                                                      
└──➜ go test -v -Tags feature1 . | grep PASS:
--- PASS: TestA (0.00 seconds)
┌─ oneofone@Oa [/t/tst-tag]                                                                                                      
└──➜ go test -v -Tags feature2 . | grep PASS:
--- PASS: TestA (0.00 seconds)
--- PASS: TESTB (0.00 seconds)

// 更新:不同的逻辑:

// +build all

package Tags

import "tesTing"

func TestA(t *tesTing.T) {}

// +build all feature1

package Tags

import "tesTing"

func TESTB(t *tesTing.T) {}

// +build all feature2

package Tags

import "tesTing"

func @R_489_8932@(t *tesTing.T) {}


┌─ oneofone@Oa [/t/tst-tag]                                                                                                      
└──➜ go test -v -Tags all | grep PASS:
--- PASS: TestA (0.00 seconds)
--- PASS: TESTB (0.00 seconds)
--- PASS: @R_489_8932@ (0.00 seconds)
┌─ oneofone@Oa [/t/tst-tag]                                                                                                      
└──➜ go test -v -Tags feature1 | grep PASS:
--- PASS: TESTB (0.00 seconds)
┌─ oneofone@Oa [/t/tst-tag]                                                                                                      
└──➜ go test -v -Tags="feature1 feature2" | grep PASS:
--- PASS: TESTB (0.00 seconds)
--- PASS: @R_489_8932@ (0.00 seconds)

或者您按名称调用特定测试,例如:

package Tags

import "tesTing"

func TestA1(t *tesTing.T) {}
func TESTB1(t *tesTing.T) {}
func @R_489_8932@1(t *tesTing.T) {}
func TestD1(t *tesTing.T) {}

输出:

┌─ oneofone@Oa [/t/tst-tag]                                                                                                      
└──➜ go test -run="(A|B)1" -v | grep PASS:
--- PASS: TestA1 (0.00 seconds)
--- PASS: TESTB1 (0.00 seconds)
┌─ oneofone@Oa [/t/tst-tag]                                                                                                      
└──➜ go test -run="D1" -v | grep PASS:
--- PASS: TestD1 (0.00 seconds)

测试包有SkipNow()Skip()方法。因此,可以在单个测试之前添加以下内容:

func skipCI(t *tesTing.T) {
  if os.Getenv("CI") != "" {
    t.Skip("SkipPing tesTing in CI environment")
  }
}

func TestNewFeature(t *tesTing.T) {
  skipCI(t)
}

然后,您可以设置环境变量或运行CI=true go test以设置CI为命令局部变量。

另一种方法是使用短模式。将以下守卫添加到测试中

if tesTing.Short() {
  t.Skip("skipPing tesTing in short mode")
}

然后执行你的测试 go test -short

解决方法

是否可以跳过/排除一些正在运行的测试go test

有相当多的集成类型测试,它们调用作为标准 go 测试编写的休息服务,并使用go test. 当开发新功能时,有时可以跳过一些测试很有用,例如,如果新功能尚未部署在测试服务器上,而我仍然想运行所有现有测试(除了那些测试的新测试)新功能)。

我知道-run,但我不想指定我想运行的所有测试,那将是一个很长的列表。同时,我无法编写用于排除测试的正则表达式。

另一种选择是不提交不在同一分支中运行的测试,但如果我可以指定要排除的内容会更容易

大佬总结

以上是大佬教程为你收集整理的使用 go test 跳过一些测试全部内容,希望文章能够帮你解决使用 go test 跳过一些测试所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。