C++ 将单元测试添加到旧解决方案时出现链接错误
我目前正在为我们的开发团队评估单元测试框架,遇到了一个我不知道如何解决的问题 我们的应用程序是使用Visual Studio 2017构建的。该解决方案包含17个项目。其中大多数是由另一个团队开发的(从我们的观点来看,基本上是第三方库),大多数项目都会生成一个dll文件。一个项目被配置为构建可执行文件 我似乎无法测试的就是那个exe项目。我试过Boost::Test和Google.Test。当我尝试使用在某个dll项目中定义的类编写测试时,它会按预期工作 但是,当我尝试测试exe项目中的代码时,我得到了exe项目中定义的代码的LNK2019“未解析的外部符号”链接器错误。如果正确设置了include目录,测试项目将引用相关的其他项目。我不知所措 在一些在线搜索和修补新设置的测试解决方案后,我发现了两个可能的原因:C++ 将单元测试添加到旧解决方案时出现链接错误,c++,visual-c++,visual-studio-2017,googletest,boost-test,C++,Visual C++,Visual Studio 2017,Googletest,Boost Test,我目前正在为我们的开发团队评估单元测试框架,遇到了一个我不知道如何解决的问题 我们的应用程序是使用Visual Studio 2017构建的。该解决方案包含17个项目。其中大多数是由另一个团队开发的(从我们的观点来看,基本上是第三方库),大多数项目都会生成一个dll文件。一个项目被配置为构建可执行文件 我似乎无法测试的就是那个exe项目。我试过Boost::Test和Google.Test。当我尝试使用在某个dll项目中定义的类编写测试时,它会按预期工作 但是,当我尝试测试exe项目中的代码时,
- 无法在生成exe文件的项目中测试代码
- 无法在使用u stdcall编译的项目中测试代码
然后,您可以像任何其他“库”项目一样测试您的项目,并且在您的基本可执行项目中没有要测试的相关代码。通常,测试框架实用程序(可执行文件)将加载您的代码、执行测试并报告结果。一个可执行文件不能加载另一个可执行文件并运行其代码-测试中的代码必须在dll中才能工作。是的,但当测试可执行文件生成时,是否可以从目标文件链接到测试中的代码?@PixelSupreme是的,这是可能的-但这是非常黑客行为。您需要明确地链接到每个对象文件,否则会出现链接器错误(就像您现在所做的那样)。通过采用适当的长期解决方案,例如将.exe项目转变为一个库,将该库作为正常情况进行卸载测试,并创建一个新的可执行项目,作为一个瘦包装,基本上调用库中的旧“main”,您的服务会更好