单元测试框架CUnitCUnit简介CUnit单元测试框架CUnit

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.3 CUnit单元测试实例(cont.)
测试函数,用来对
void testFREAD(void)
fread()的测试用例
{
进行测试,通过断言
char buffer[20];
判断向临时文件
if (NULL != temp_file) {
读取数据是否正确
rewind(temp_file);
CU_ASSERT(9 == fread(buffer,
写入数据是否正确
void testFPRINTF(void) {
int i1 = 10; if (NULL != temp_file) {
CU_ASSERT(0 == fprintf(temp_file, "")); CU_ASSERT(2 == fprintf(temp_file, "Q\n")); CU_ASSERT(7 == fprintf(temp_file, "i1 = %d", i1)); } }
2 单元测试框架CUnit
2.1 CUnit简介 2.2 CUnit单元测试框架 2.3 CUnit简单实例 2.4 CUnit体系结构及源码解读 2.5 CUnit综合实例
2.1 CUnit简介
-学习CUnit的目标
❖ 深入理解单元测试 ❖ 深入理解测试驱动开发 ❖ 学习优秀的开源代码
2.1 CUnit简介(cont.)
} else {
temp_file = NULL; return 0; } }
测试包的清除函数 关闭临时文件, 成功则返回0, 失败返回-1
2.3 CUnit单元测试实例(cont.)
int main() {
CU_pSuite pSuite = NULL;
第2步:初始化测试实例
if (CUE_SUCCESS != CU_initialize_registry()) return CU_get_error();
{
return -1;
} else {
return 0; } }
测试包初始化函数, 打开临时文件, 若不存在则创建 成功则返回0, 失败返回-1
2.3 CUnit单元测试实例(cont.)
int clean_suite1(void) {
if (0 != fclose(temp_file)) { return -1;
#include <stdio.h> #include <string.h> #include "CUnit/cunit.h" #include "CUnit/basic.h" /* 定义指向临时文件的文件指针*/ static FILE* temp_file = NULL;
第1步:测试函数, 用来对fprintf()的测试 用例进行测试,通过 断言判断向临时文件
2.3 CUnit单元测试实例(cont.)
-断言assert
❖ assert(表达式);
当表达式为真时,程序继续运行,如果表达市 为假,那程序就会停止运行,并提示错误信息。
❖ CUnit中的断言
CUnit对assert进行了封装,提供了丰富的断言。 CU_ASSERT(maxi(0,-2) == 0) CU_ASSERT(2 == fprintf(temp_file, "Q\n")) CUnit跟踪捕获断言,根据断言的执行情况记
return CU_get_error(); }
第4步:向测包集中增加测试用例
CU_basic_set_mode(CU_BRM_VERBOSE); CU_basic_run_tests();
CU_cleanup_registry(); return CU_get_error(); }
第5步:设置基本模式,控制台输出结果 第6步:注销测试实例
pSuite = CU_add_suite("Suite_1", init_suite1,
clean_suite1);
if (NULL == pSuite) {
CU_cleanup_registry();
return CU_get_error();
}
第3步:向测试实例中增加测试包
2.3 CUnit单元测试实例(cont.)
if ((NULL == CU_add_test(pSuite, "test of fprintf()", testFPRINTF)) ||
(NULL == CU_add_test(pSuite, "test of fread()", testFREAD)))
{
CU_cleanup_registry();
sizeof(unsigned char), 20, temp_file));
CU_ASSERT(0 == strncmp(buffer, "Q\ni1 =
10", 9));
}
}
2.3 CUnit单元测试实例(cont.)
int init_suite1(void)
{
if (NULL == (temp_file = fopen("temp.txt", "w+")))
❖ 不是一个完整的测试工具,以静态库链接库 的形式提供了一个单元测试框架。
❖ 丰富的断言(ASSERT)语句支持。 ❖ 支持多种不同的模式进行测试和报告结果。 ❖ http://cunit.sourceforge.net
2.2 CUnit单元测试框架
-单元测试框架
2.2 CUnit单元测试框架(cont.)
录测试结果
2.2 CUnit单元测试框架(cont.)
-CUnit单元测试组织框架
Test Registry
Suite 1 …… Suite n
Test 11 …… Test 1M Test N1…… Test NM
2.3 CUnit单元测试实例
-CUnit测试步骤
❖ 1.编写测试函数,由测试函数构成测试用例。 ❖ 2.调用CU_initialize_registry()初始化测试实例(test
registry)。 ❖ 3.向测试实例中增加测试包(test suite)。 ❖ 4.向测试包中增加测试用例。 ❖ 5.选择测试模式执行测试,例如非交互的在控制台
输出测试结果,则调用CU_console_run_tests。 ❖ 6.注销测试实例,一般调用CU_cleanup_registry。
ຫໍສະໝຸດ Baidu
2.3 CUnit单元测试实例(cont.)
相关文档
最新文档