- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我想在运行 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...
,例如TestExcludableA
、TestExludableB
等)。然后使用稍微老掉牙的否定正则表达式运行,例如 -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/
我是一名优秀的程序员,十分优秀!