Visual Studio 2017中C++与C#单元测试共存问题:C++测试未识别
解决Visual Studio中C#与C++单元测试共存的问题
我完全理解你遇到的这个麻烦——刚装的VS 15.7.2本来C++测试好好的,加了C#测试后反而识别不出来了,确实挺闹心的。下面是我亲测有效的几个解决方案,你可以一步步尝试:
1. 检查测试适配器的启用状态
VS里不同语言的测试依赖对应的适配器,大概率是C++测试适配器被意外干扰禁用了:
- 打开测试菜单 → 测试设置 → 测试适配器管理器
- 在弹出窗口里,找到C++测试适配器(也可能显示为"Native Test Adapter"),确保它处于勾选启用状态
- 同时确认**.NET测试适配器**也正常启用,之后重启VS再查看测试识别情况
2. 用runsettings文件区分原生与.NET测试
你提到尝试了runsettings但不知道怎么区分,其实可以通过指定适配器路径和测试过滤规则来实现:
创建或修改你的TestConfig.runsettings文件,加入以下内容:
<RunSettings> <TestAdapters> <!-- 明确指定C++原生测试适配器路径 --> <Path>%VSINSTALLDIR%\Common7\IDE\Extensions\TestPlatform\NativeTestAdapter</Path> <!-- 明确指定.NET测试适配器路径 --> <Path>%VSINSTALLDIR%\Common7\IDE\Extensions\TestPlatform\DotNetTestAdapter</Path> </TestAdapters> <RunConfiguration> <!-- 可选:如果需要单独跑某类测试,可添加过滤规则 --> <!-- 比如只跑C++测试时启用:<TestCaseFilter>(TestCategory=CPlusPlus)</TestCaseFilter> --> </RunConfiguration> </RunSettings>
配置完成后:
- 打开测试菜单 → 测试设置 → 选择测试设置文件,选中这个配置文件
- 右键解决方案选择清理解决方案,重新生成所有项目,再点击测试资源管理器的刷新按钮
3. 为C++测试项目指定专属运行器
有时候VS会默认用.NET测试运行器去处理C++测试,导致识别失败:
- 右键你的C++测试项目 → 属性
- 切换到测试标签页,在测试运行器下拉菜单里选择Native Test Runner
- 保存设置后重新生成C++测试项目,再刷新测试资源管理器
4. 修复Visual Studio测试组件
如果上面的方法都没用,可能是VS的测试组件安装不完整:
- 打开Visual Studio Installer,选中你的VS安装实例点击修改
- 在单个组件的测试工具分类下,确保勾选了C++测试工具和**.NET测试工具**
- 点击修改完成组件修复,重启VS后再测试
另外,你提到右键单个C测试文件跑提示"No tests found",可以试试右键C测试项目选择运行测试,单个文件的识别偶尔会有延迟,直接跑项目的成功率更高。
内容的提问来源于stack exchange,提问作者Brian Womack




