C++ Visual Studio 2017 Google测试项目组织+测试发现失败

C++ Visual Studio 2017 Google测试项目组织+测试发现失败,c++,visual-studio-2017,googletest,C++,Visual Studio 2017,Googletest,我在将项目及其测试组织到Microsoft Visual Studio 2017解决方案中时遇到问题。我的项目当前以.lib文件的形式工作,并且正在工作,并且正在被我计算机上的另一个解决方案使用 我以解决方案的形式打开了我的项目,然后使用“添加项目…”和Google测试项目提示符将一个新项目添加到解决方案中。我选择了我的项目来进行测试,并说我会把谷歌测试当作一个.LIB和C++运行库来动态链接。 然后我编译并运行All,发现了自动创建的默认启动测试。太好了 然后,我包括../managers/C

我在将项目及其测试组织到Microsoft Visual Studio 2017解决方案中时遇到问题。我的项目当前以.lib文件的形式工作,并且正在工作,并且正在被我计算机上的另一个解决方案使用

我以解决方案的形式打开了我的项目,然后使用“添加项目…”和Google测试项目提示符将一个新项目添加到解决方案中。我选择了我的项目来进行测试,并说我会把谷歌测试当作一个.LIB和C++运行库来动态链接。 然后我编译并运行All,发现了自动创建的默认启动测试。太好了

然后,我包括../managers/ConfigManager.h并再次尝试运行所有文件,我得到了project.lib中使用的各种头文件的“cannotopensourcefile”。好的,我将适当的include目录添加到我的测试项目属性中

“Run All”现在缺少主项目的各个组件所使用的库,因此我将所有库添加到附加依赖项中,并将它们的目录添加到测试项目属性中的附加依赖项目录中

尝试再次运行会导致发生几件事情

我得到以下输出,表示我们找不到任何测试

[2018年3月31日下午12:17:59信息性]=========发现测试已完成:0发现0:00:03.5029168==========

[2018年3月31日12:18:03 PM信息]---运行测试已开始---

[3/31/2018 12:18:04 PM信息]谷歌测试的测试适配器测试:测试执行开始

[3/31/2018 12:18:08 PM information]在可执行文件C:\Users\TwinHits\Source\Repos\project\x64\Debug\tests.exe中找到0个测试

[2018年3月31日12:18:08下午信息]正在运行0个测试

[2018年3月31日12:18:08下午信息]谷歌测试执行完成,总持续时间:00:00:03.7586898

[3/31/2018 12:18:08 PM Warning]在C:\Users\TwinHits\Source\Repos\TwinHits\x64\Debug\tests.exe C:\Users\TwinHits\Source\Repos\project\x64\Debug\project.lib中没有可用的测试。请确保已注册测试发现者和执行者,并且平台和框架版本设置适当,然后重试

运行测试完成后,我收到此错误:0运行

System.AggregateException:发生一个或多个错误。--> System.InvalidOperationException:未找到以下TestContainer'C:\Users\John Goben\Source\Repos\TIEngine\x64\Debug\Sample-Test1.exe' 位于Microsoft.VisualStudio.TestWindow.Controller.TestContainerProvider。 d__62.下一步 --来自引发异常的上一个位置的堆栈结束跟踪-- 在System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccessTask任务中 在

System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotificationTask任务 在 Microsoft.VisualStudio.TestWindow.Controller.TestContainerConfiguration Query.d__15.MoveNext

我的项目运行main.cpp,这对我来说没有任何意义


关于如何组织我的测试和项目以使测试正确运行,或者我走错了方向,您有什么指导吗?

我已经解决了这个问题。Lib项目不应该有main。如果有人能解释为什么这会扰乱谷歌测试的测试发现,我很想听听原因。

有没有可能是你的项目的main而不是googletests的main被执行了?但是你是对的,库不应该有main,如果你幸运的话,你的链接器会抱怨它有两个main.obj的定义和一个main函数。