Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 使用CMake在CLion中使用多个Main进行Google单元测试_Unit Testing_Cmake_Googletest_Clion - Fatal编程技术网

Unit testing 使用CMake在CLion中使用多个Main进行Google单元测试

Unit testing 使用CMake在CLion中使用多个Main进行Google单元测试,unit-testing,cmake,googletest,clion,Unit Testing,Cmake,Googletest,Clion,各位 在我特定的Clion项目中,我有几个cpp单元测试文件(google测试),每个文件都有它的主测试。我正在寻找一种方法,以一种简单的方式运行项目的所有单元测试。现在,我只能单独运行每个目标,我不想为所有测试创建一个唯一的main OBS:cpp单元测试文件组织在“测试”文件夹内的不同文件夹中 谁能帮我 请注意,CLion只是使用CMake来驱动构建。CMake已经生成了一个运行所有测试的目标,运行maketest 在Clion中添加运行进行测试的配置在Clion中,导航到运行>编辑配置…

各位

在我特定的Clion项目中,我有几个cpp单元测试文件(google测试),每个文件都有它的主测试。我正在寻找一种方法,以一种简单的方式运行项目的所有单元测试。现在,我只能单独运行每个目标,我不想为所有测试创建一个唯一的main

OBS:cpp单元测试文件组织在“测试”文件夹内的不同文件夹中

谁能帮我


请注意,CLion只是使用CMake来驱动构建。

CMake已经生成了一个运行所有测试的目标,运行
maketest


在Clion中添加运行
进行测试的配置在Clion中,导航到运行>编辑配置…

在左侧面板上方,单击加号(+)图标,然后选择谷歌测试

在右侧,将名称字段设置为描述性字段

Target字段设置为希望运行其单元测试的CMake项目名称。如果未列出要查找的目标,则必须检查以确保正确配置了CMakeLists.txt文件


单击确定应用按钮后,这将在运行配置中列出,并将为要测试的可执行文件运行所有单元测试。

OP提到的问题是,存在多个包含二进制文件的目标。Google测试控件只允许一个目标。答案是使用复合执行

首先,如果不熟悉此概念,请回顾:

其次,遵循以下步骤:

步骤:

  • 为要包括的每个测试可执行文件创建单独的GTest测试配置
  • 创建复合执行配置并添加在步骤1)中创建的各个执行
  • 从运行菜单执行新的复合配置
  • 若要获得结果的统一视图,请在弹出提示询问时启用“运行仪表板”
  • <> LI>可以考虑与其他用户共享执行规范。
    您正在使用哪个构建系统?我不知道CLion,但大多数构建系统允许定义依赖于其他系统的自定义目标。您可以定义一个自定义目标
    运行所有测试
    ,具体取决于
    运行每个测试
    。这是一个CMake问题,它完全独立于CLion:如果您在CMakeLists.txt中对其进行修复,该修复将在使用CLion和不使用CLion的情况下都能工作。您应该在googletest测试套件中拥有一个
    main
    函数。你为什么要对抗它?为什么不将目标添加到ctest?”4.要获得结果的统一视图,请在弹出提示“…询问时启用“运行仪表板”。。。我没有收到弹出提示(可能已更改,我使用的是2020.3.1版)。如何手动获取统一视图?如果我现在运行几个测试,它们都将连续运行,并覆盖测试结果树,如果测试失败,执行不会停止。