在编写嵌入式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

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

被折叠的 条评论
为什么被折叠?



