我如何找到哪些测试涵盖了特定的 Go 代码?

T19*_*0CT 1 testing code-coverage go visual-studio-code

我试图弄清楚是否有办法查看哪些测试覆盖了我的 Go 代码中的函数。我正在与其他开发人员一起开发代码库,因此我没有自己编写所有测试/代码。

我看到一些函数被部分覆盖或几乎完全覆盖,但它们在任何地方都没有引用(在它自己的或其他包中),并且这些函数在任何测试中都不会直接调用。

有没有办法找到哪些测试涵盖了特定代码?当我试图寻找是否可能时,我得到的只是展示如何编写/运行测试并获取覆盖率/突出显示的文章,但没有任何内容实际表明它是否可能。

作为记录,我在 Linux 上使用 VS Code,并go test ./... -cover在我的终端中运行,并Ctrl+Shift+P -> "Go: Toggle Test Coverage In Current Package"在 VS Code 中突出显示覆盖范围。

Fli*_*mzy 5

现在通过评论可以看到更全面的情况,您似乎有一堆由缺乏 Go 经验的人编写的测试,您的目标是清理测试以遵循标准的 Go 约定。

如果我面临这个任务,我的策略可能是通过使用永远不会执行的构建标签来禁用存储库中的所有测试,例如:

// +build skip

package foo
Run Code Online (Sandbox Code Playgroud)

通过运行 确认所有测试均已禁用go test ./... -cover,并确认各处覆盖率均为 0%。

然后,逐个测试,我会将每个测试移动到适当的位置,并将其放入一个不带skip构建标签的新文件中。

如果这是一个大项目,我可能会一次执行一个包,或者执行其他一些小的逻辑步骤,以避免出现巨大的拉取请求。在这里使用你自己的判断。

我也强烈抵制同时进行任何其他清理或修复的冲动。我的目标是让每个 PR 都成为简单的复制粘贴,因此审核很简单,并且我会保存我发现的其他清理工作的列表,以供以后执行。