C/C++之 快速编写单元测试或测试程序

本文介绍了一种在嵌入式Linux环境下进行快速单元测试的方法,通过定义宏TEST_MAIN来区分正式程序与测试程序,简化了测试流程。同时,文章还提供了结合Makefile的实践方法,以及更简单的手动切换代码块的方式。

在编写嵌入式linux应用的时候,我们一个系统中单单只是想要测试或者验证一个函数时, 往往有很多的依赖,如以来的*.c、.cpp、.h文件。如果不把这些头文件包括进来,或者确少其他的C/C++模块,编译器会报错。
接下来介绍一种很方便,可以很快速的进行一个单元测试,或者很快的进行一个测试程序的编写的方法。
其实方法很简单,定义一个宏就可以。

快速单元测试方法

单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,,Java里单元指一个类。

代码

原理很简单如下:

#ifndef TEST_MAIN
/* 正式的程序 */
int main(int argc, char **argv) {
	printf("I'm test code\n");
}
#else
/* 测试程序 */
int main(int argc, char **argv) {
	printf("I'm test code\n");
}
#endif

结合Makefile

结合Makefile的用法:

  • 执行make命令的时候传入一个Makefile的变量TEST_MAIN=1
  • 根据TEST_MAIN变量的值,定义C文件中的宏TEST_MAIN,也就是给gcc 传入-DTEST_MAIN的参数
  • 执行make test_main
#Makefile
ifeq ($(TEST_MAIN) , 1)
CFLAGS += -DTEST_MAIN
CXXFLAGS += -DTEST_MAIN
endif
...
...
test_main:
	make pc TEST_MAIN=1

更简单粗暴的方法

使用#if 0或者#if 1来进行手动切换

#if 0
/* 正式的程序 */
int main(int argc, char **argv) {
	printf("I'm test code\n");
}
#else
/* 测试程序 */
int main(int argc, char **argv) {
	printf("I'm test code\n");
}
#endif
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值