【问题标题】:Unable to Successfully Set Up Unit Tests in C++ using Google Test无法使用 Google Test 在 C++ 中成功设置单元测试
【发布时间】:2021-06-04 13:01:55
【问题描述】:

我正在尝试使用 google test 来验证 C++ 中红黑树实现的一些测试。我正在关注此post 中评分最高的答案。我确定要说明 Google Test 的最新发行版是 1.10.0 版,而不是 1.8.0 版。我尝试安装和链接库的步骤如下:

首先,我得到了最新的 Google 测试框架,如下所示:

wget https://github.com/google/googletest/archive/release-1.10.0.tar.gz

这成功安装。接下来,我可以在新的 googletest-release-1.10.0 文件夹中解压缩并构建 google test 的共享库。调用后调用make:

cmake -DBUILD_SHARED_LIBS=ON .

导致此消息:

[ 25%] Built target gtest
[ 50%] Built target gmock
[ 75%] Built target gmock_main
[100%] Built target gtest_main

问题似乎发生在我将库中的标头复制到正确目录的步骤中。我可以这样做

 sudo cp -a googletest/include/gtest /usr/include

但我的系统无法在 googlemock/gtest 中找到文件:尝试复制这些文件:

sudo cp -a googlemock/gtest/libgtest_main.so googlemock/gtest/libgtest.so /usr/lib/

提示不存在此类文件:

cp: cannot stat 'googlemock/gtest/libgtest_main.so': No such file or directory
cp: cannot stat 'googlemock/gtest/libgtest.so': No such file or directory

【问题讨论】:

  • 为什么要手动复制而不是sudo make install

标签: c++ unit-testing googletest


【解决方案1】:

当你构建包时,你会得到一个这样的目录:

├── appveyor.yml
├── bin
├── BUILD.bazel
├── ci
├── CMakeCache.txt
├── CMakeFiles
├── cmake_install.cmake
├── CMakeLists.txt
├── CONTRIBUTING.md
├── CTestTestfile.cmake
├── googlemock
├── googletest
├── lib
├── library.json
├── LICENSE
├── Makefile
├── platformio.ini
├── README.md
└── WORKSPACE

您找不到的文件位于lib 文件夹中。

lib
├── libgmock_main.so
├── libgmock.so
├── libgtest_main.so
└── libgtest.so

【讨论】:

    【解决方案2】:

    我认为你不应该使用cp -a。由于在/usr/lib 中复制的.so 文件似乎具有不可用的编译权限。

    我的 CMakeList.txt 是这样的:

    add_executable(Test test.cc)
    target_link_libraries(Test /usr/lib/libgtest.so /usr/lib/libgtest_main.so -pthread)
    

    如果你使用cp -a,在make过程中会出现如下错误:

    make[2]: *** No rule to make target '/usr/lib/libgtest.so', needed by 'Test'.  Stop.
    

    所以我只用cp,并没有错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-01
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      相关资源
      最近更新 更多