» C语言快速入门 » 2. 高级篇 » 2.3 测试

测试

在 C 中创建和执行测试用例进行测试,可以确保你的 C 代码能够按预期运行。

断言

断言用于在程序执行过程中检查特定条件是否为真。 <assert.h> 头文件中的 assert 宏是 C 中一种基本形式的断言。

#include <assert.h>

int add(int a, int b) {
    return a + b;
}

int main() {
    // 断言 add 函数计算 2 和 3 的结果是 5
    assert(add(2, 3) == 5);
    return 0;
}

测试框架

考虑使用 UnityCheck 之类测试框架来完善测试。 这些框架提供了编写和执行测试用例结构基础,并自动汇总报告结果的功能。

以下以 Unity 测试框架为例:

#include <stdio.h>
#include <stdlib.h>
// 假设你有一个用于计算的头文件
#include "calculator.h"

// 包含 Unity 测试框架
#include "unity.h"

// 声明要测试的函数
int add(int a, int b);
int subtract(int a, int b);
int multiply(int a, int b);
int divide(int a, int b);

// 为 Unity 设置初始化准备和清理函数
void setUp(void) {}
void tearDown(void) {}

// 定义测试用例
void test_addition(void) {
    TEST_ASSERT_EQUAL_INT(5, add(2, 3));
    TEST_ASSERT_EQUAL_INT(-1, add(2, -3));
    // 添加更多加法的测试用例
}

void test_subtraction(void) {
    TEST_ASSERT_EQUAL_INT(-1, subtract(2, 3));
    TEST_ASSERT_EQUAL_INT(5, subtract(2, -3));
    // 添加更多减法的测试用例
}

void test_multiplication(void) {
    TEST_ASSERT_EQUAL_INT(6, multiply(2, 3));
    TEST_ASSERT_EQUAL_INT(-6, multiply(2, -3));
    // 添加更多乘法的测试用例
}

void test_division(void) {
    TEST_ASSERT_EQUAL_INT(2, divide(6, 3));
    TEST_ASSERT_EQUAL_INT(-2, divide(6, -3));
    // 添加更多除法的测试用例
}

// 运行测试
int main(void) {
    UNITY_BEGIN();
    // 运行测试用例
    RUN_TEST(test_addition);
    RUN_TEST(test_subtraction);
    RUN_TEST(test_multiplication);
    RUN_TEST(test_division);
    // 结束测试套件
    return UNITY_END();
}

每个测试用例使用 TEST_ASSERT_EQUAL_INT 宏检查实际结果是否与预期结果相匹配。 setUptearDown 函数可用于在每个测试之前和之后进行必要的准备或清理。