Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Go中实现测试包的代码覆盖率_Go_Testing_Code Coverage - Fatal编程技术网

如何在Go中实现测试包的代码覆盖率

如何在Go中实现测试包的代码覆盖率,go,testing,code-coverage,Go,Testing,Code Coverage,我正在尝试为我的golang项目生成代码覆盖率 我的设置如下: - my_project | - my_package | | - my_dev_file.go | | - test | | | - my_dev_file_test.go 此设置允许从调用包的客户机的角度测试代码,而不需要了解其内部实现。在销售时,开发目录和测试目录是明确分开的,这加强了项目的全局可读性 测试代码如下所示: import ( "..." "testing" "path-t

我正在尝试为我的
golang
项目生成代码覆盖率

我的设置如下:

- my_project
|  - my_package
|  |  - my_dev_file.go
|  |  - test
|  |  |  - my_dev_file_test.go
此设置允许从调用包的客户机的角度测试代码,而不需要了解其内部实现。在销售时,开发目录和测试目录是明确分开的,这加强了项目的全局可读性

测试代码如下所示:

import (
    "..."
    "testing"
    "path-to/my_package"
    "..."
)

func TestSomething(t *testing.T) {
    t.Run("should do something", func(t *testing.T) {
       my_package.MyStruct.DoSomething()

       // test something...
    })
}
就测试而言,此设置工作正常

然而,我似乎无法生成覆盖率报告。覆盖率为
0%
我启动的任何命令,从以下命令开始:

go test -coverprofile=coverage.out ./.../test
OK path-to/test       0.005s  coverage: 0.0% of statements
OK other-path-to/test 0.007s  coverage: 0.0% of statements
我正在寻找一种在不影响项目组织方式的情况下生成适当代码覆盖率的方法

可以这样做吗?

您应该运行

go test -coverprofile=coverage.out ./...

我试过了,但没用。如果它对你有效,那么这可能意味着我的问题来自其他地方。事实上,我已经开发了一个小的“断言”库,所以我不必一遍又一遍地写相同的断言。这可能是我的问题。。。我需要测试这个。事实上,我没有任何错误消息!!测试很顺利。我只是没有任何覆盖范围…只需安装visual studio代码并安装golang pluggin,然后转到测试文件,然后右键单击并选择在当前包中切换测试覆盖范围。它将以图形方式显示代码中以及terminal@ASHWINRAJEEV嘿,伙计,谢谢你的评论。然而,对于我的项目来说,这不是一个好的实践,因为我需要自动化所有事情。就我而言,代码覆盖率不能依赖于安装IDE。测试和行覆盖率是在每个包的基础上完成的。进口包装不被视为正在测试中。由于你的项目组织得很糟糕,没有什么可以“妥协”的。我明白你的意思。然而,我不明白其中的逻辑:golang提供了将测试作为生产代码放在不同包中的可能性,这是完全合理的。如果您以后无法计算代码覆盖率,为什么要提供这种可能性???不。为什么在技术上可以在包a中为包a编写测试(使用非b_测试)这是绝对不推荐或鼓励的。您误用了工具。顺便说一句:这种语言叫做“围棋”。