如何在golang中动态跳过测试?

use*_*346 2 unit-testing go

我们在HTTP服务器上有一个特殊的文本文件,其中包含我们在运行golang测试时要跳过的文件名和测试函数.

我必须构建下载该测试文件的东西,解析应该跳过的文件名和测试函数,然后最终运行我们的go测试并正确跳过输入文件中的测试函数.

在golang中使用这个工作的正确方法是什么?

(我意识到这听起来像是一种不寻常的跳过方式,但我们真的希望按照我所描述的原因完成这项工作,因为这个问题与这个问题背道而驰.)

Iht*_*kaS 5

您可以使用(*testing.T).Skip()函数跳过测试用例.您可以在go的测试文件的init函数中下载测试文件.然后在地图或数组中解析并加载函数名称.在运行每个案例之前,请检查测试用例是否包含在跳过列表中,如果需要则跳过.

// Psuedo code -> foo_test.go
var skipCases map[string]bool

func init() {
    // download and parse test file.
    // add test case names which needs skipped into skipCases map
}

func TestFoo(t *testing.T) {
    if skipCases["TestFoo"] {
        t.Skip()
    }
    // else continue testing
}
Run Code Online (Sandbox Code Playgroud)

  • 您还可以尝试使用"-run regexp"标志来执行go test命令.您可以使用命名约定对测试用例进行分组,并在运行测试用例时传递正则表达式,以执行与特定模式匹配的测试用例.但是,如果不改变现有的测试用例,这些解决方案都不会有效. (2认同)