IDE - Eclipse
Eclipse IDE for C/C++ Developers
https://www.eclipse.org/downloads/packages/
![[C语言单元测试] 编译环境搭建_单元测试 gtest](https://i-blog.csdnimg.cn/blog_migrate/cd1fe8c931d3cb2a84a83764484afa5d.png)
https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/2023-06/R/eclipse-cpp-2023-06-R-win32-x86_64.zip
编译器 - MinGW
32bit MinGW
https://sourceforge.net/projects/mingw-w64/
![[C语言单元测试] 编译环境搭建_单元测试 gtest_02](https://i-blog.csdnimg.cn/blog_migrate/861b654bc6dcb549bc46cdf4c3128d3c.png)
![[C语言单元测试] 编译环境搭建_单元测试 gtest_03](https://i-blog.csdnimg.cn/blog_migrate/9c82b8549f6dff86236cda95e39de403.png)
解压缩i686-8.1.0-release-win32-dwarf-rt_v6-rev0.7z,
![[C语言单元测试] 编译环境搭建_单元测试 gtest_04](https://i-blog.csdnimg.cn/blog_migrate/b40ec6fcf46142eceaf0ab51805fc1d7.png)
我的电脑里,将mingw32重命名为MinGW后,环境变量里新增如下的配置
![[C语言单元测试] 编译环境搭建_单元测试 gtest_05](https://i-blog.csdnimg.cn/blog_migrate/3df7536081d3a74d3db44b92f6dabe45.png)
检查gcc的版本
![[C语言单元测试] 编译环境搭建_单元测试 gtest_06](https://i-blog.csdnimg.cn/blog_migrate/97310c88fca5e654a97ad4a01fdd9cf2.png)
单元测试框架-gtest
https://github.com/google/googletest/releases/tag/release-1.8.1
git clone https://github.com/google/googletest.git
第一个测试程序
参考《软件单元测试入门与实践》ch5.4
https://zlg.cn/foxmail/weixinpdf/software_unit_test.pdf
- File -> C++ project \ Empty Project \ MinGW GCC
- 项目属性页面,C/C++ Build \ Setting \ GCC C++ Compiler \ Includes 添加google test的头文件路径及include路径
-
![[C语言单元测试] 编译环境搭建_单元测试 gtest_07](https://i-blog.csdnimg.cn/blog_migrate/6809c2f69f22aa2da11780f7e94068e0.png)
- MinGW C++ linker \ Libraries 添加pthread
-
![[C语言单元测试] 编译环境搭建_单元测试 gtest_08](https://i-blog.csdnimg.cn/blog_migrate/760f74f1d72d09d5cd20a8ae6e887bb4.png)
- 项目右键菜单 New -> File \ Link to file in the file system,找到gtest的src目录下的gtest-all.cc
-
![[C语言单元测试] 编译环境搭建_单元测试 gtest_09](https://i-blog.csdnimg.cn/blog_migrate/2c51ffc48ce5c172feb1f272c51d6b43.png)
在Eclipse下编译并运行程序
![[C语言单元测试] 编译环境搭建_单元测试 gtest_10](https://i-blog.csdnimg.cn/blog_migrate/e17b78ef2aca619678ad7707959b68f2.png)
![[C语言单元测试] 编译环境搭建_单元测试 gtest_11](https://i-blog.csdnimg.cn/blog_migrate/0de578a74a805016fa4a9bcede5b45f8.png)
![[C语言单元测试] 编译环境搭建_单元测试 gtest_13](https://i-blog.csdnimg.cn/blog_migrate/af229f79fea8b9438aab0c664638000e.png)
总结和注意事项
- eclipse的工程配置:MinGW 工程,MinGW GCC
选择32位的MinGW,在仿真嵌入式的应用下更加符合实际情况(目前使用的嵌入式的处理器仍是32位);64位的MinGW编写测试程序,编译报错(32位的MinGW不存在这个情况)
链接gtest的source code,根据教程一步步设置即可
- 目录结构及代码
-
![[C语言单元测试] 编译环境搭建_单元测试 gtest_14](https://i-blog.csdnimg.cn/blog_migrate/df542f6c9dc391681309b90a45ba8ad8.png)
LeapYear.h
#ifndef __LEAP_YEAR_H__
#define __LEAP_YEAR_H__
#if defined(__cplusplus)
extern "C" {
#endif
bool IsLeapYear(int year);
#if defined(__cplusplus)
}
#endif
#endif // #ifndef __LEAP_YEAR_H__
LeapYear.c
#include <stdbool.h>
#include "LeapYear.h"
bool IsLeapYear(int year)
{
bool flag = false;
if ((0 == year % 400) || (0 != year %100) && (0 == year % 4))
{
flag = true;
}
return flag;
}
LeapYearTest.cpp
#include <gtest/gtest.h>
#include "../src/LeapYear.h"
TEST(IsLeapYearTest, leapYear)
{
EXPECT_TRUE(IsLeapYear(2000));
EXPECT_TRUE(IsLeapYear(1996));
}
TEST(IsLeapYearTest, commonYear)
{
EXPECT_FALSE (IsLeapYear(1999));
EXPECT_FALSE (IsLeapYear(2100));
}
test_main.cpp
//============================================================================
// Name : LeapYearGtest.cpp
// Author :
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <gtest/gtest.h>
int main(int argc, char **argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
4414





