使用 Visual Studio 2010 C++。我正在尝试单元测试,并决定尝试谷歌测试(gtest)。我有一个编译为 MFC 可执行文件的现有项目(我也对如何测试编译为 DLL 的项目感兴趣)。我对单元测试约定的理解是,您应该为测试创建一个新的单独项目。所以我在同一个解决方案中为我的单元测试创建了一个新项目。但是我如何链接这些项目呢?我可以从我的测试项目中测试我的 exe 项目的任意函数/方法吗?
这样做的传统方法是什么?
使用 Visual Studio 2010 C++。我正在尝试单元测试,并决定尝试谷歌测试(gtest)。我有一个编译为 MFC 可执行文件的现有项目(我也对如何测试编译为 DLL 的项目感兴趣)。我对单元测试约定的理解是,您应该为测试创建一个新的单独项目。所以我在同一个解决方案中为我的单元测试创建了一个新项目。但是我如何链接这些项目呢?我可以从我的测试项目中测试我的 exe 项目的任意函数/方法吗?
这样做的传统方法是什么?
我认为组织单一测试的最佳方法是:
不要改变你的主要项目。该结构应该独立于您的测试操作。在我看来,将你的项目更改为一个大的静态库和一个可执行文件真的很不优雅。相反,添加一个构建后操作以将所有 obj 文件聚合到一个静态 lib 文件中,该文件仅供您的测试项目使用。
创建一个简单的测试项目,链接到您的测试框架和您之前生成的静态库。
享受。
主要优点是您不接触要测试的项目,也不会将所有源代码包含到测试项目中。
要了解如何为 Visual Studio 执行此操作,您可以查看这篇文章: Linking to multiple .obj for unit testing a console application
将您要测试的功能放入链接到您的测试项目和 MFC 项目的静态库中,或者将您的文件放入两个项目中。第一个更复杂,但第二个会导致你编译所有东西两次......
我已经准备了一个 github 存储库,其中包括比利的回答并行的 Visual Studio 2015 解决方案。您可以直接使用它,而无需任何额外的要求或依赖。
https://github.com/fuatcoskun/GoogleTestVS2015
我希望它有帮助...