我的包中有一个生成的文件,上面有DO NOT EDIT
个.我正在用go test -coverprofile=cover.out <package>
测试我的软件包.这将创建覆盖率配置文件并显示总覆盖率百分比.但在计算覆盖率时,它还包括生成的文件.在覆盖率计算中有没有办法忽略生成的文件?
我的包中有一个生成的文件,上面有DO NOT EDIT
个.我正在用go test -coverprofile=cover.out <package>
测试我的软件包.这将创建覆盖率配置文件并显示总覆盖率百分比.但在计算覆盖率时,它还包括生成的文件.在覆盖率计算中有没有办法忽略生成的文件?
大多数围棋工具都是在包上操作的,因为一个包本身就形成了一个unit,这可能对它整体上很有用.从包中排除文件很容易" destruct "包:被排除的文件可能包含(关键的)包初始化代码,甚至可能导致剩余的包文件无法编译.
go test
也不例外:它也对包进行操作.没有直接支持从包中排除文件.
如果您的包可以在没有生成文件的情况下编译和测试,您可以 Select 将该文件生成到不同的包中,然后它将不会自然地包含在包的(覆盖率)测试中.
处理这一问题的另一种方法是仍然在相同的包/文件夹中生成它,并在生成的文件中使用特殊的构建标记,在运行覆盖测试时可以排除这些标记.您可以在此处:Build Constraints和此处:What is the right approach to encapsulate platform specific code in Go?阅读更多关于构建标记的内容
如果需要生成的文件来编译/测试包,那么您仍然可以 Select :对生成的文件使用internal包.内部包只对以internal
文件夹为根的包树可用,这意味着您可以导出内部包中的任何标识符,编译器确保它们不会被"非预期的"各方使用.您可以在此处阅读有关内部包的更多信息:Can I develop a go package in multiple source directories?
还要考虑为生成的代码编写或生成测试的选项,这可能是一个很好的实践,这样您就不必使用技巧将它们排除在覆盖范围测试之外.