Google Test未检测到任何测试求助——基于VS2017内置版本
解决Visual Studio 2017中Google Test未检测到测试用例的问题
我来帮你一步步排查这个问题,我之前在VS2017用内置GTest做概念验证时也碰到过类似情况:
1. 确认测试项目的基础配置
- 确保你创建的是Google Test项目,而非普通控制台/空项目。VS2017的Google Test模板会自动配置好GTest的依赖、预编译头和测试适配器关联,如果是手动改的普通项目,很容易漏掉关键配置。
- 检查测试项目的
pch.h文件,确认已经包含了GTest的核心头文件:
你的#include <gtest/gtest.h>test.cpp开头包含了pch.h,如果pch里没引入GTest,TEST/EXPECT_EQ这些测试宏根本不会被正确识别。
2. 修正待测试代码的引用方式
你现在直接包含了../ConsoleApplication1/ConsoleApplication1.cpp,这种做法容易引发重复编译符号冲突,也不是规范的单元测试姿势:
- 先在
ConsoleApplication1项目中创建一个头文件(比如sum.h),把sum函数的声明放进去:#pragma once int sum(int a, int b); - 在
ConsoleApplication1.cpp中实现这个函数:#include "sum.h" int sum(int a, int b) { return a + b; } - 把测试项目的
test.cpp里的引用改成头文件:#include "pch.h" #include "../ConsoleApplication1/sum.h" TEST(SumTest, FirstTest) { EXPECT_EQ(6, sum(2, 4)); } TEST(SumTest, SecondTest) { EXPECT_EQ(1, 1); EXPECT_TRUE(true); } - 最后给测试项目添加依赖:右键测试项目 → 属性 → 通用属性 → 框架和引用 → 添加新引用 → 勾选
ConsoleApplication1,这样测试项目才能链接到待测试的代码。
3. 检查VS测试资源管理器设置
- 打开VS的测试资源管理器(顶部菜单 → 测试 → Windows → 测试资源管理器)。
- 点击顶部的“设置”图标,确认Google Test适配器已启用(VS2017内置的GTest应该自带这个适配器,没找到的话可以去扩展商店搜一下)。
- 点击“刷新”按钮,手动触发测试发现。
4. 清理重建解决方案
VS的编译缓存有时候会抽风,导致测试用例无法被检测到:
- 顶部菜单 → 生成 → 清理解决方案。
- 然后重新生成整个解决方案(生成 → 重新生成解决方案)。
- 再次刷新测试资源管理器,看看测试用例是否出现。
5. 补全预处理器定义(可选)
如果以上步骤都不行,检查测试项目的预处理器设置:
- 右键测试项目 → 属性 → C/C++ → 预处理器 → 预处理器定义。
- 添加
_VARIADIC_MAX=10(VS2017对可变参数模板的默认限制可能导致GTest的宏解析失败)。
内容的提问来源于stack exchange,提问作者Neil Ruggiero
相关产品推荐
相关产品推荐

