如何使用ThrowTheSwitch的Unity C单元测试库解决编译链接报错问题
问题原因与解决方法
你遇到的所有报错都是链接阶段符号未找到错误,核心是编译时缺少必要的源文件,同时你的业务代码存在语法问题。
第一步:修复业务代码语法错误
你的mytest.c中if判断缺少括号,会触发编译错误,修改如下:
// 原错误写法 if idx == 42 // 修改后 if (idx == 42)
第二步:明确编译所需的所有依赖文件
你需要将三类文件同时加入编译流程:
- 你自己的业务代码文件:
mytest.c - 单元测试主文件:
mytestMain.c - Unity库的实现源文件:
unity.c(仅引入头文件unity.h不会编译实现逻辑,必须加入源文件)
第三步:执行编译命令
如果所有文件都在当前工作目录,直接运行以下编译命令即可:
gcc mytest.c mytestMain.c unity.c -o mytest
如果Unity的头文件和源文件存放在单独的./unity目录下,需要指定头文件搜索路径:
gcc mytest.c mytestMain.c ./unity/unity.c -I./unity -o mytest
第四步:运行单元测试
直接执行生成的可执行文件即可查看测试结果:
./mytest
可选:使用Makefile简化操作
你可以在项目目录下新建Makefile文件,内容如下:
CC = gcc CFLAGS = -Wall -I. TEST_TARGET = mytest all: $(TEST_TARGET) ./$(TEST_TARGET) $(TEST_TARGET): mytest.c mytestMain.c unity.c $(CC) $(CFLAGS) $^ -o $@ clean: rm -f $(TEST_TARGET) *.o
后续只需执行make命令即可自动完成编译、运行测试的全流程,执行make clean可清理生成的文件。
内容的提问来源于stack exchange,提问作者Vince Molnar
相关产品推荐
相关产品推荐

