添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Ubuntu上,用Cmake搭建一个gtest环境的步骤总结

创建测试环境目录

创建src目录来存放源代码,创建tst 来存放测试代码,lib存放google test 等库文件,build用来build来构建整个项目。

$ tree -L 2 ExampleProject
ExampleProject
├── build
├── CMakeLists.txt
├── lib
│   └── googletest
├── src
│   ├── CMakeLists.txt
│   ├── DoubleInt.h
│   └── main.cpp
└── tst
    ├── CMakeLists.txt
    ├── main.cpp
    └── test.cpp

创建目录的命令:

mkdir -p project/{src, lib, tst}

安装cmake & google test

安装CMAKE:

sudo apt-get install camke

安装google test:

从Github拉去最新的google test 代码:

git clone https://github.com/google/googletest.git

创建CMakeLists.txt

根CMakeLists.txt

cmake_minimum_required(VERSION 3.10)   # 最低需要安装的CMAKE版本
project(ExampleProject)                # Project Name
set(CMAKE_CXX_STANDARD 14)              # 需要满足的CXX 标准
include_directories(src)                # 头文件所在的目录。
add_subdirectory(src)                                   #子项目目录
add_subdirectory(tst)                                    # 同上
add_subdirectory(lib/googletest)                   #同上

Src的CMakeLists.txt

set(BINARY ${CMAKE_PROJECT_NAME})                      # 设置BINARY 为整个project名字
file(GLOB_RECURSE SRC_SOURCES LIST_DIRECTORIES true *.h *.cpp)   # 搜索当前目录下所有CPP和.h 文件
set(SOURCES ${SRC_SOURCES})                                                                  # 把找到的SOUCES 文件设置为SOURCES
add_executable(${BINARY}_run ${SOURCES})
add_library(${BINARY}_lib STATIC ${SOURCES})

Tst的CMakeLists.txt

set(BINARY ${CMAKE_PROJECT_NAME}_tst)
file(GLOB_RECURSE TEST_SOURCES LIST_DIRECTORIES false *.h *.cpp)
set(SOURCES ${TEST_SOURCES})
add_executable(${BINARY} ${TEST_SOURCES})
add_test(NAME ${BINARY} COMMAND ${BINARY})
target_link_libraries(${BINARY} PUBLIC ${CMAKE_PROJECT_NAME}_lib gtest)

创建示例代码和测试用例

src内的文件

DoubleInt.h

#ifndef __DOUBLEINT_HEADER
#define __DOUBLEINT_HEADER
class DoubleInt {
public:
  static int doubleInt(int value) {
    return value*2;
#endif

main.cpp

#include <iostream>
#include "DoubleInt.h"
int main() {
    std::cout << DoubleInt::doubleInt(2) << std::endl;
    return 0;

tst内的文件

main.cpp

#include "gtest/gtest.h"
int main(int argc, char **argv) {
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();

test.cpp

#include "gtest/gtest.h"
#include "DoubleInt.h"
TEST(testDouble, test1){
  EXPECT_EQ(DoubleInt::doubleInt(3), 5);
  EXPECT_EQ(DoubleInt::doubleInt(2), 4);

编译并且测试代码

准备好所有的文件之后,切换到build目录下,执行

cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug -G "Unix Makefiles" 
cd tst
 ./ExampleProject_tst
$ ./ExampleProject_tst
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from testDouble
[ RUN      ] testDouble.test1
/home/cs1/Documents/sandbox/blog/cmake_gtest/ExampleProject/tst/test.cpp:5: Failure
Expected equality of these values:
  DoubleInt::doubleInt(3)
    Which is: 6
[  FAILED  ] testDouble.test1 (0 ms)
[----------] 1 test from testDouble (0 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (0 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] testDouble.test1
 1 FAILED TEST

https://raymii.org/s/tutorials/Cpp_project_setup_with_cmake_and_unit_tests.html

Ubuntu上,用Cmake搭建一个gtest环境的步骤总结创建测试环境目录创建src目录来存放源代码,创建tst 来存放测试代码,lib存放google test 等库文件,build用来build来构建整个项目。$ tree -L 2 ExampleProjectExampleProject├── build├── CMakeLists.txt├── lib│ └── googletest├── src│ ├── CMakeLists.txt│ ├── DoubleIn
googletest googletest 是一个由 Google 的测试技术团队开发的测试框架,它考虑到了谷歌的特定需求和限制。无论你使用的是 Linux、Windows 还是 Mac,只要你编写 C++ 代码,googletest 都可以帮到你。它支持任何类型的测试,不只是单元测试googletest安装 #下载gtest,release-1.8.0 git clone https://github.com/google/googletest # gtest编译 cd googletest #生成Makefile文件(先安装cmake,brew install cmake),继续输入命
CMakeTestCCompiler.cmake错误解决欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 最近编译项目的时候,遇到一个cmake的错误,具体错误信息如下: /path-to-pr
对于工程师自己来说,单元测试也是提升自信心的一种方式。 直接交付没有经过测试的代码是不太好的,因为这很可能会浪费整个团队的时间,在一些原本早期就可以发现的问题上。而单元测试,就是发现问题一个很重要的环节。 本文以C++语.
本指南将向您展示如何通过Google的测试框架使用CMake单元测试来设置新的C ++项目。 通过此设置,您可以立即开始使用C ++进行测试驱动的开发。 弄清楚如何将gtest添加到现有项目并开始在旧的(现有)代码库上进行TDD也很简单。 环境:win10 子系统linux ubuntu18.04 确保已经安装了cmake(3.10以上),g++,gcc等基本环境。 最后的效果图: void ZipReader::init() QList&amp;lt;QZipReader::FileInfo&amp;gt; allFiles = m_reader-&amp;gt;fileInfoList(); forea...
error: Missing CMake tests. Either create tests in tests/auto/cmake, or disable cmake config file creation with CONFIG-=create_cmake. 解决方法有两种: 1、在项目下面新建tests/auto/cma... error: Missing CMake tests. Either create tests in tests/auto/cmake, or disable cmake config file creation with CONFIG-=create_cmake. 解决方法有两种: 1、在项目下面新建tests/auto/cmake目录,解决问题 2、在.qmake.conf文件第一行添加CMAKE_M CMake Error at CMakeLists.txt:7 (find_package): By not providing "FindOpencv.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "Opencv", but CMake did not find one. Could not fin