C代码单元测试(一)

代码的单元测试是一个运行被测代码并且将实际输出与期望输出进行比较的过程,本文使用一个简单的例子记录代码测试的基本想法。

typedef struct
{
	int output;
	int a;
	int b;
	int(*unit_test)();
}ST_UNITTEST_T;

创建一个单元测试,包含两个输入一个输出以及一个指向被测函数的函数指针

// add a test
ST_UNITTEST_T *addTestFun(int(*TestFun)(int, int), int a, int b, int output)
{
	ST_UNITTEST_T *testobj = (ST_UNITTEST_T * )malloc(sizeof(ST_UNITTEST_T));
	testobj->a = a;
	testobj->b = b;
	testobj->output = output;
	testobj->unit_test = TestFun;
	return testobj;
}

通过该函数初始化一个测试结构体,传入被测函数的指针、输入、期望输出

// user function to be tested
int add(int a, int b)
{
	return a + b;
}

创建一个被测函数,该函数包含两个输入一个输出

// run test: call object function to be tested and compare results
void runTest(ST_UNITTEST_T *ptest)
{
	if (NULL != ptest)
	{
		int count = ptest->unit_test(ptest->a, ptest->b);
		if (count == ptest->output)
		{
			printf("success!\n");
		}
		else
		{
			printf("failed %d != %d \n", count, ptest->output);
		}
		free(ptest);
	}
}

创建一个函数执行单元测试,调用被测函数并且将实际运行结果和期望结果比较,打印输出

void main()
{
	ST_UNITTEST_T *stCase1;
	stCase1 = addTestFun(add, 1, 2, 5);
	runTest(stCase1);
}

在main函数中执行我们的单元测试

failed 3 != 5
请按任意键继续. . .

测试完成

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值