gpt4 book ai didi

unit-testing - 在包下运行 go test 时,如何在测试和覆盖率报告中跳过 go 文件

转载 作者:IT王子 更新时间:2023-10-29 01:41:04 33 4
gpt4 key购买 nike

我想在运行 go test 和覆盖时跳过某个包下的特定 go 文件。请找到下面的命令,我曾经在我的服务包下运行:

cd src/service && go test --coverprofile coverageService.out --coverpkg ./.

最佳答案

不幸的是,没有简单的方法可以仅根据文件名跳过测试,但是,这里有三个可能有效的简单选项:

<强>1。使用正则表达式指定测试

go test 命令支持-run 运行时选项,它只运行满足正则表达式的测试:

-run regexp

Run only those tests and examples matching the regular expression. For tests, the regular expression is split by unbracketed slash (/) characters into a sequence of regular expressions, and each part of a test's identifier must match the corresponding element in the sequence, if any. Note that possible parents of matches are run too, so that -run=X/Y matches and runs and reports the result of all tests matching X, even those without sub-tests matching Y, because it must run them to look for those sub-tests.

为了使其工作,您需要以可以通过正则表达式排除它们的方式命名相关文件中的所有测试(例如,使所有测试都以 开头TestExcludable...,例如TestExcludableATestExludableB等)。然后使用稍微老掉牙的否定正则表达式运行,例如 -run "Test[^E][^x][^c][^l][^u][^d][^a][^b ][^l][^e].*"

<强>2。不要使用构建标志编译某些测试

详见this stackoverflow post ,您可以使用构建标志来防止将特定文件构建为测试套件的一部分。简而言之,

skip_test.go

// +build !skipset1
package name

import testing

// Rest of test file

然后当您调用 go test 时,我们使用 -tags 参数并指定您要跳过的测试,例如 -tags skipset1 .

<强>3。在构建期间重命名有问题的文件

如 go 测试文档中所述,

Files whose names begin with "_" (including "_test.go") or "." are ignored.

简单地用重命名包围你的 go test 命令,这样要跳过的文件实际上不会编译到测试可执行文件中:

mv src/skip_test.go src/_skip_test.go && 去测试... || mv src/_skip_test.go src/skip_test.go

(注意 || 的使用,在第二个步骤中,即使 go 测试失败,它也会运行)。

关于unit-testing - 在包下运行 go test 时,如何在测试和覆盖率报告中跳过 go 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49605482/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com