Google 测试的单元测试是否与项目一起导出?

Are Unit Tests with Google Test exported with project?

我一直在学习使用 C++ 中的 Google 测试进行单元测试。

如果单元测试的目的是确保代码的某些部分或对象按预期方式工作,我认为没有必要在最终项目中编译和导出单元测试代码,对吧?无论如何用户都不会使用它。看起来它使项目大小不必要地变大了。

我的主要问题是:所有单元测试代码都将与最终项目一起编译和导出,还是我必须在导出之前手动删除所有单元测试?

单元测试和导出项目是否有最佳(或通用)实践?

如果您要发布库,发布单元测试是很常见的。例如,假设您正在 Mac 或 Linux 上进行开发,而有人想要在 Windows 上进行编译。好吧,他们应该能够 运行 您的测试以确保它们在不同的环境中通过。或者 Android,或者一些微控制器。随便。

此外,有人可能会决定帮助您改进项目。他们将添加一个非常酷的功能。如果他们可以 运行 您的单元测试以确保他们不会破坏任何东西,那就太好了。

所以是的,如果您将项目作为源代码发布,请包括单元测试。如果您只发布已编译的库,则可以排除它们。

任何测试都用于维护源代码。

当您对源代码进行一些更改时,您应该 运行 进行测试以验证:新功能正常工作并且旧功能没有被破坏。 如果测试失败,这表明开发人员必须修复某些问题。

因此,如果您的应用程序或库在交付时是准确的,那么就没有必要进行测试。为什么?当您只有可执行文件时,您无法修改代码,因此没有必要进行 运行 测试。

如果您将库发布为开源,那么您的测试也应该发布。

如果您仅将库发布为可执行文件,则测试源代码可以是文档形式。如果测试编写得当,他们将记录如何以各种可能的方式使用 API,因为测试是一种代码(正式语言),所以这种形式的文档不会被误解。

作为可执行文件发送测试根本没有降神会。

我建议观看鲍勃叔叔(罗伯特 C. 马丁)的演讲,在大多数演讲中,他解释了测试的目的及其重要性。