$ go test -cover -coverpkg mypackage ./src/api/...
ok /api 0.190s coverage: 50.8% of statements in mypackage
ok /api/mypackage 0.022s coverage: 0.7% of statements in mypackage
相比
$ go test -cover ./src/api/...
ok /api 0.191s coverage: 71.0% of statements
ok /api/mypackage 0.023s coverage: 0.7% of statements
2015年: 这些测试不是服务包的一部分,go工具覆盖率返回0%的测试覆盖率 2023年3月,Go 1.20封面补充: Go语言1.20支持收集程序(应用程序和集成测试)的代码覆盖率概要文件,而不仅仅是单元测试。 要收集程序的覆盖率数据,请使用go build的-cover标志构建它,然后运行生成的二进制文件,并将环境变量GOCOVERDIR设置为覆盖率配置文件的输出目录。 有关如何开始的详细信息,请参阅“coverage for integration tests”登录页。有关设计和实施的详细信息,请参阅proposal。 如“Code coverage for Go integration tests“中所述, 在1.20版本中,Go语言的覆盖工具不再局限于包测试,而是支持从更大的集成测试中收集概要文件。 示例:
$ go build -cover -o myprogram.exe myprogram.go
$ mkdir somedata
$ GOCOVERDIR=somedata ./myprogram.exe
I say "Hello, world." and "see ya"
$ ls somedata
covcounters.c6de772f99010ef5925877a7b05db4cc.2424989.1670252383678349347
covmeta.c6de772f99010ef5925877a7b05db4cc
4条答案
按热度按时间ijxebb2r1#
我被指向了
-coverpkg
指令,它做了我需要的事情--测量特定包中的测试覆盖率,即使测试使用了这个包而不是它的一部分。相比
在上面的例子中,我在
main_test.go
中进行了测试,而package main
使用了package mypackage
。我最感兴趣的是package mypackage
的覆盖率,因为它包含了项目中99%的业务逻辑。我是Go语言的新手,所以很有可能这不是通过集成测试来度量测试覆盖率的最佳方法。
ibrsph3r2#
你可以用创建覆盖率html页面的方式运行go测试。像这样:
6ie5vjzr3#
据我所知,如果你想覆盖你需要运行
go test -cover
。然而,添加一个您可以传入的标志来启用这些额外的测试是很容易的,这样您就可以将它们作为测试套件的一部分,但不正常运行它们。
因此,在
whatever_test.go
中添加一个命令行标志然后在每个测试中做类似这样的事情
然后运行集成测试
vddsk6oq4#
2015年:
这些测试不是服务包的一部分,go工具覆盖率返回0%的测试覆盖率
2023年3月,Go 1.20封面补充:
Go语言1.20支持收集程序(应用程序和集成测试)的代码覆盖率概要文件,而不仅仅是单元测试。
要收集程序的覆盖率数据,请使用
go build
的-cover
标志构建它,然后运行生成的二进制文件,并将环境变量GOCOVERDIR
设置为覆盖率配置文件的输出目录。有关如何开始的详细信息,请参阅“coverage for integration tests”登录页。有关设计和实施的详细信息,请参阅proposal。
如“Code coverage for Go integration tests“中所述,
在1.20版本中,Go语言的覆盖工具不再局限于包测试,而是支持从更大的集成测试中收集概要文件。
示例:
还有
使用coverage数据文件
Go语言1.20引入了一个新的工具,“
covdata
”,可以用来从GOCOVERDIR
目录中读取和操作覆盖率数据文件。