无法使用 Google Test 在 C++ 中成功设置单元测试
Posted
技术标签:
【中文标题】无法使用 Google Test 在 C++ 中成功设置单元测试【英文标题】:Unable to Successfully Set Up Unit Tests in C++ using Google Test 【发布时间】: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
?
【参考方案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
,并没有错。
【讨论】:
以上是关于无法使用 Google Test 在 C++ 中成功设置单元测试的主要内容,如果未能解决你的问题,请参考以下文章