[C语言单元测试] 编译环境搭建

IDE - Eclipse


Eclipse IDE for C/C++ Developers

 https://www.eclipse.org/downloads/packages/

[C语言单元测试] 编译环境搭建_单元测试 gtest

 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

[C语言单元测试] 编译环境搭建_单元测试 gtest_03

解压缩i686-8.1.0-release-win32-dwarf-rt_v6-rev0.7z,

[C语言单元测试] 编译环境搭建_单元测试 gtest_04

我的电脑里,将mingw32重命名为MinGW后,环境变量里新增如下的配置

[C语言单元测试] 编译环境搭建_单元测试 gtest_05

检查gcc的版本

[C语言单元测试] 编译环境搭建_单元测试 gtest_06

单元测试框架-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

  • MinGW C++ linker \ Libraries 添加pthread
  • [C语言单元测试] 编译环境搭建_单元测试 gtest_08

  • 项目右键菜单 New -> File \ Link to file in the file system,找到gtest的src目录下的gtest-all.cc
  • [C语言单元测试] 编译环境搭建_单元测试 gtest_09


在Eclipse下编译并运行程序

[C语言单元测试] 编译环境搭建_单元测试 gtest_10

[C语言单元测试] 编译环境搭建_单元测试 gtest_11

[C语言单元测试] 编译环境搭建_单元测试 gtest_13

总结和注意事项

  • eclipse的工程配置:MinGW 工程,MinGW GCC

选择32位的MinGW,在仿真嵌入式的应用下更加符合实际情况(目前使用的嵌入式的处理器仍是32位);64位的MinGW编写测试程序,编译报错(32位的MinGW不存在这个情况)

链接gtest的source code,根据教程一步步设置即可

  • 目录结构及代码
  • [C语言单元测试] 编译环境搭建_单元测试 gtest_14

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();
}

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值