CLion中配置gtest
环境:Windows,cmake,gcc,g++,CLion一、下载源码
二、解压并构建(我是怎么知道的?)
进入处于解压目录的cmd窗口
https://img2023.cnblogs.com/blog/2718286/202309/2718286-20230927105054293-1335508573.png
输入以下命令cmake以下
https://img2023.cnblogs.com/blog/2718286/202309/2718286-20230927111612937-1405351514.png
使用以下命令构建
https://img2023.cnblogs.com/blog/2718286/202309/2718286-20230927111724035-201361205.png
100%即构建成功
https://img2023.cnblogs.com/blog/2718286/202309/2718286-20230927112123130-1804267980.png
找到这些东西,复制到CLion项目中,文件结构在后面
我这里是先创建一个gtest目录,在gtest目录下在创建一个lib目录,把libgtest.a和libgtest_main.a放进去
把源码 googletest目录下的inlclude复制到第一个gtest目录下(使include与lib目录同级)
https://img2023.cnblogs.com/blog/2718286/202309/2718286-20230927112333397-1249001415.png
文件结构
│CMakeLists.txt
├─.idea
├─gtest
│├─gtest
│││gtest-assertion-result.h
│││gtest-death-test.h
│││gtest-matchers.h
│││gtest-message.h
│││gtest-param-test.h
│││gtest-printers.h
│││gtest-spi.h
│││gtest-test-part.h
│││gtest-typed-test.h
│││gtest.h
│││gtest_pred_impl.h
│││gtest_prod.h
│││
││└─internal
││ │gtest-death-test-internal.h
││ │gtest-filepath.h
││ │gtest-internal.h
││ │gtest-param-util.h
││ │gtest-port-arch.h
││ │gtest-port.h
││ │gtest-string.h
││ │gtest-type-util.h
││ │
││ └─custom
││ gtest-port.h
││ gtest-printers.h
││ gtest.h
││ README.md
││
│└─lib
│ libgtest.a
│ libgtest_main.a
│
├─include
│ add.h
│
├─lib
│
├─src
│ add.cpp
│ CMakeLists.txt
│
└─test
│CMakeLists.txt
│test_main.cpptest目录 存放测试函数和主函数
cmake文件:
# 指定可执行文件的生成位置
# set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)
aux_source_directory(. TEST_LIST)
# cmake三部曲
# 指定头文件-指定库文件-链接
# 指定头文件目录
include_directories(${PROJECT_SOURCE_DIR}/gtest ${PROJECT_SOURCE_DIR}/include)
# 指定静态链接库文件目录
link_directories(${PROJECT_SOURCE_DIR}/gtest/lib)
# 执行文件
add_executable(${PROJECT_NAME} ${TEST_LIST})
target_link_libraries(${PROJECT_NAME} gtest gtest_main add)注意
这里在写路径时,必须留一个gtest目录,因为其中的.h文件中引用的都是gtest/***.h,正确示例如下:
https://img2023.cnblogs.com/blog/2718286/202309/2718286-20230927133536516-464037059.png
https://img2023.cnblogs.com/blog/2718286/202309/2718286-20230927133539868-1534843353.png
如果写到能暴露gtest.h一系列头文件的目录,会产生编译时报错,而这些错误将需要你修改gtest.h一系列头文件的所有#include引入
错误示例
https://img2023.cnblogs.com/blog/2718286/202309/2718286-20230927133758379-456113686.png
https://img2023.cnblogs.com/blog/2718286/202309/2718286-20230927133800812-605411517.png
原因:
https://img2023.cnblogs.com/blog/2718286/202309/2718286-20230927133904560-527217068.png
其中原因仔细思考也是很好理解的
src目录 存放被测试的函数
cmake文件:
aux_source_directory(. SRC_LIST)
#windows系统动态库生成lib文件命令
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
# 添加头文件路径
include_directories(${ROJECT_SOURCE_DIR}/include)
set(LIBRARY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/lib")
message("start add_library add")
add_library(add ${SRC_LIST})
message("add_library add finished")根目录下的cmake文件:
cmake_minimum_required(VERSION 3.23.2)
project(WeightGraph)
set(CMAKE_C_COMPILER gcc)
set(CMAKE_CXX_COMPILER g++)
set(CMAKE_CXX_STANDARD 17)
add_subdirectory(src)
add_subdirectory(test)include目录 存放头文件用于文件链接
add.h
#ifndef WEIGHTGRAPH_ADD_H
#define WEIGHTGRAPH_ADD_H
int add(int ,int );
#endif //WEIGHTGRAPH_ADD_Hadd.cpp
int add(int n1, int n2)
{
return n1 + n2;
}test_main.cpp
#include <iostream>
#include "add.h"
#include "gtest/gtest.h"
class TestForAdd : public testing::Test {
void SetUp() {}
void TearDown(){}
};
TEST_F(TestForAdd,test1){
ASSERT_EQ(12,add(4,8));
}
TEST_F(TestForAdd,test2){
EXPECT_EQ(5,add(2,3));
}
TEST_F(TestForAdd,test3){
EXPECT_EQ(4,add(1,2));
}
int main(int argc, char **argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}查看README.md
想知道什么就看谁的README.md
根目录没有就看子目录
https://img2023.cnblogs.com/blog/2718286/202309/2718286-20230927111353543-792997872.png
https://img2023.cnblogs.com/blog/2718286/202309/2718286-20230927111309373-2074515817.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]