You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

搭建C语言单元测试开发环境:实现构建时自动运行测试

搭建C语言单元测试自动运行环境的通用步骤

1. 选个易上手的单元测试框架

挑轻量无依赖的就行,比如Unity(纯C实现,直接把它的头文件和源文件丢进项目目录就能用),或者Check。先以Unity为例,把框架文件放到项目的vendor/目录下。

2. 规整项目结构

把业务代码和测试代码分开,避免混乱:

  • src/:存放你的生产代码(比如math.c、math.h)
  • tests/:存放测试用例代码(比如test_math.c)
  • vendor/:放测试框架的代码

3. 写第一个测试用例

在tests/test_math.c里写个简单的测试,比如测试加法功能:

#include "unity.h"
#include "../src/math.h"

void test_addition(void) {
    TEST_ASSERT_EQUAL(5, add(2, 3));
}

int main(void) {
    UNITY_BEGIN();
    RUN_TEST(test_addition);
    return UNITY_END();
}

4. 编写Makefile

创建一个Makefile,让构建时自动编译并运行测试。下面是基础模板:

# 编译器和编译参数
CC = gcc
CFLAGS = -Wall -Wextra -I./src -I./vendor

# 生产代码相关
SRC_FILES = src/math.c
OBJ_FILES = $(SRC_FILES:.c=.o)

# 测试代码相关
TEST_SRC = tests/test_math.c
TEST_OBJ = $(TEST_SRC:.c=.o)
TEST_FRAMEWORK = vendor/unity.c

# 默认执行目标:编译生产代码 + 运行测试
all: build run-tests

# 编译生产代码
build: $(OBJ_FILES)
    $(CC) $(CFLAGS) -o my_program $(OBJ_FILES)

# 编译测试程序
test-program: $(TEST_OBJ) $(OBJ_FILES)
    $(CC) $(CFLAGS) -o test_runner $(TEST_OBJ) $(OBJ_FILES) $(TEST_FRAMEWORK)

# 运行测试并清理临时文件
run-tests: test-program
    ./test_runner
    rm -f test_runner $(TEST_OBJ)

# 清理所有生成文件
clean:
    rm -f my_program $(OBJ_FILES)

5. 验证自动运行

在终端输入make,会自动完成:编译业务代码 → 编译测试程序 → 运行测试并输出结果。如果测试失败,make会直接终止并提示错误。

6. 适配TDD流程

以后按TDD模式开发时,先写失败的测试用例,运行make看到测试失败,再修改业务代码,直到make运行测试通过,重复这个循环即可。

内容的提问来源于stack exchange,提问作者mrs15

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 23:55:32