clion不提供独立的“添加测试模块”操作,需通过cmake集成测试框架(如google test、catch2)并配置add_test等指令,再手动创建或保存永久运行配置才能识别和运行测试。

CLion 本身不提供“添加测试模块”这个独立操作,而是根据你选用的测试框架(如 Google Test、Catch2、Boost.Test、Vitest)和项目构建系统(CMake / Meson / Gradle)自动识别或需要你手动配置测试支持。 直接在项目里新建一个 .cpp 文件写 TEST_CASE 或 TEST_F 不会自动变成可运行的测试——必须让 CLion 知道“这是测试”,且构建系统能编译它。
确认测试框架是否已集成到 CMakeLists.txt
这是最常被跳过的一步。CLion 不会主动把任意源文件当测试,它依赖 CMake 的 add_test 或测试框架的启用逻辑来发现测试。
- Google Test:需在
CMakeLists.txt中调用find_package(GTest REQUIRED),并用add_executable构建测试二进制,再用add_test注册 - Catch2:通常只需把
catch_amalgamated.hpp加入项目,并确保测试文件被add_executable包含;若使用CATCH_CONFIG_MAIN,则该文件必须是唯一含main()的测试入口 - CTest(通用包装器):只要 CMake 中有
enable_testing()和至少一个add_test(...),CLion 就能自动创建All Tests配置
如果 CMakeLists.txt 里没有这些,CLion 就看不到测试——哪怕你写了 100 个 TEST_CASE,装订区也不会出现运行图标。
手动触发测试识别:右键 → “Create ‘xxx’”
当你已经写好测试文件(比如 test_vector.cpp),但 CLion 没自动识别,可以主动干预:
- 在
Project工具窗口中右键点击该测试文件 - 选择
Create 'test_vector'(菜单名会动态显示文件名) - CLion 会尝试基于文件内容推断框架,并创建对应类型的运行配置(如
Catch2 Application或Google Test) - 若失败,说明文件缺少框架必需元素(例如 Catch2 缺少
#define CATCH_CONFIG_MAIN,或 Google Test 没包含gtest/gtest.h)
这个操作本质是让 CLion 基于当前文件生成一个临时运行配置,不是“注册模块”,而是“临时跑一次”。要长期可用,仍需补全 CMake 集成。
检查运行配置是否为永久配置
临时配置图标是半透明的,关掉 IDE 就消失;永久配置才真正“落地”。
- 运行测试后,在顶部运行配置切换器里看到的是临时配置(灰色图标)
- 点击切换器旁的
⋯→Save Configuration,或打开Run | Edit Configurations后选中它点磁盘图标,才能转为永久配置 - 永久配置会出现在项目
.idea/runConfigurations/下,下次打开 IDE 仍可用 - 若配置图标带红色叉号,说明路径、工作目录或
Executable字段指向错误——常见于测试二进制未生成或路径写死
很多人以为点一下就能“加模块”,其实只是临时执行;真正让测试稳定出现在项目结构里,靠的是 CMake + 永久配置双保险。
最容易被忽略的是:CLion 对测试的支持完全被动——它不修改你的 CMakeLists.txt,也不帮你下载框架头文件。你得先让构建系统能编译出测试可执行文件,CLion 才有东西可运行。否则所有点击操作都只是空转。











