单元测试工具

  • 1 CUnit 单元测试工具的安装
  • 2 关于cunit编译成第3库添加到eclipse中使用
  • 3 cunit示例demo
  • 4 展示效果
  • 5 CUnit 的交叉编译
  • 6 参考博客

1 CUnit 单元测试工具的安装

  • 借鉴博客
    cunit在linux的安装

2 关于cunit编译成第3库添加到eclipse中使用

  • 参考博客,里面有详细介绍
    eclipse添加第3方库

3 cunit示例demo

  • 通常用法

使用CUnit框架的典型步骤是:

编写待测函数(必要时,还得编写套件的 init/cleanup 函数)。
初始化测试注册表(Test Registry) - CU_initialize_registry()
将套件(Suite)添加到测试注册表 - CU_add_suite()
将测试用例(Test)加到套件里 - CU_add_test()
调用合适的接口函数执行测试,例如CU_console_run_tests
清除测试注册表 - CU_cleanup_registry

/*============================================================================Name        : cunit_test_demo.cAuthor      : xhomeVersion     :Copyright   : Your copyright noticeDescription : Hello World in C, Ansi-style============================================================================*/#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include "CUnit/CUnit.h"
#include "CUnit/Basic.h"
#include "CUnit/Automated.h"//加法函数
int add_func(int a, int b)
{return a+b;
}
//除法函数
double div_func(int a, int b)
{if(b == 0){printf("b is 0.");return -1;}return a/b;
}
//开辟空间
char * malloc_func(int size)
{char * p = NULL;p = (char *)malloc(size * sizeof(char));if(p == NULL){return NULL;}return p;
}//add case
void add_func_case(void)
{int expectValue = 0;expectValue = 9;CU_ASSERT_TRUE(expectValue == add_func(4, 5));expectValue = 11;CU_ASSERT_TRUE(expectValue == add_func(10, 1));
}
//div case
void div_func_case(void)
{int retValue = 0;retValue = 2;CU_ASSERT_TRUE(retValue == div_func(10,5));retValue = 3;CU_ASSERT_TRUE(retValue == div_func(9,3));retValue = -1;CU_ASSERT(retValue == div_func(9,0));
}//div case
void malloc_func_case(void)
{//可以使用专门的指针地址测试函数CU_ASSERT(malloc_func(-1) == NULL);CU_ASSERT(malloc_func(1024) != NULL);
}//init
int cunit_test_init(void)
{return 0;
}
//cleanup
int cunit_test_cleanup(void)
{return 0;
}// test casesCU_TestInfo cunit_test_case[] = {{"add_func_case", add_func_case},{"div_func_case", div_func_case},CU_TEST_INFO_NULL,};// test cases
CU_TestInfo cunit_ptr_case[] = {{"malloc_func_case", malloc_func_case},CU_TEST_INFO_NULL,
};// suiteCU_SuiteInfo suites[] ={{ "Test demo", cunit_test_init, cunit_test_cleanup, NULL, NULL, cunit_test_case },{ "Test demo1", cunit_test_init, cunit_test_cleanup, NULL, NULL, cunit_ptr_case },CU_SUITE_INFO_NULL,};int main(void) {puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */if(CUE_SUCCESS != CU_initialize_registry()){printf("<CUnit Test> CU_initialize_registry fail!!!\n");return CU_get_error();}if(CUE_SUCCESS != CU_register_suites(suites)){printf("<CUnit Test> CU_register_suites fail!!!\n");CU_cleanup_registry();return CU_get_error();}#if 1//output file.xmlCU_set_output_filename("cunit_test_demo");CU_list_tests_to_file();CU_automated_run_tests();#endifCU_basic_set_mode(CU_BRM_VERBOSE);CU_basic_run_tests();CU_cleanup_registry();return EXIT_SUCCESS;
}

4 展示效果



5 CUnit 的交叉编译

./configure --host=arm-linux --prefix=/home/xxx/opt_soft/cunit_arm_install CC=/home/xxx/petalinux2018.3/tools/linux-i386/aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
make
make install

6 参考博客

cunit中文手册

1019.单元测试工具CUnit相关推荐

  1. 开源单元测试工具汇总

    开源单元测试工具/框架汇总 作为开源软件的爱好者,了解了单元测试这概念后,自然忍不住去找找有什么开源单元测试工具. 下面列出了30款1,不分先后顺序. 1. NoSQL的单元测试工具 NoSQLUni ...

  2. Openstack_单元测试工具 tox

    目录 目录 扩展阅读 Openstack 的单元测试工具 单元测试工具使用流程 tox toxini 参考文章 扩展阅读 Python Mock的入门 Openstack 的单元测试工具 unitte ...

  3. 在.NET开发中的单元测试工具之(1)——NUnit

    NUnit介绍 NUnit是一个专门针对于.NET来写的单元测试框架,它是xUnit体系中的一员,在xUnit体系中还有针对Java的JUnit和针对C++的CPPUnit,在开始的时候NUnit和x ...

  4. python 单元测试 工具_Django单元测试工具test client使用详解

    The test client test client是一个python类,来模拟一个简单的"哑"浏览器,允许你来测试你的view函数.你可以使用test client完成下列事情 ...

  5. SAP UI5 初学者教程之二十七 - SAP UI5 应用的单元测试工具 QUnit 介绍试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...

  6. SAP UI5 应用开发教程之二十七 - SAP UI5 应用的单元测试工具 QUnit 介绍

    Jerry 在之前做 SAP UI5 标准开发和现在使用 Angular 开发 SAP Spartacus 应用时,我们团队的开发规范就是,每增添一个新的前端 feature,必须要用一个新增的单元测 ...

  7. 常见单元测试工具介绍

    1.       C/C++语言开发的首选利器- C++Test 以前在windows平台下的开发,使用的框架主要是MFC,以及console工程(基于win32SDK),属于纯C/C++开发的范畴. ...

  8. 说实话,写了这么多程序了,还从来没有用JUnit作为单元测试工具测试过,今天就来学习一下

    1.    说实话,写了这么多程序了,还从来没有用JUnit作为单元测试工具测试过,心理面感到真的是惭愧.原来的所有测试,我都是通过在控制台打印输出语句看结果,这样就可以根据自己打印的信息自己去判断, ...

  9. 使用单元测试工具TestDriven.NET调试程序

    文本Tag: TestDirector 单元测试 测试工具 .NET [IT168 技术文档] 引言 在实际的项目中,我们会遇到如下的问题: 1. 在编写一些不太好调试的程序时,如WebService ...

最新文章

  1. 下载和安装Nginx之配置选项
  2. Redis运行流程源码解析--转载
  3. C++中的hash_map和map的区别
  4. navicat连接mysql闪退_Navicat连接MySQL时报10060及1045错误及my.ini位置问题
  5. 10.static_extern
  6. 在Windows下编译zlib1.2.5
  7. Controller数据导出Excel 详细教程——easypoi-base,easypoi-web,easypoi-annotation
  8. Expression Blend实例中文教程(3) - 布局控件快速入门Grid
  9. mysql删除重复记录语句的方法
  10. 重装mysql 失败_重装MySQL最后一步失败的解决办法
  11. Postman的测试脚本(一)
  12. 微信小程序tabbar美化(中间图标突起)
  13. 独立站运营必知:关于聊天机器人的十大好处
  14. Mybatis事务失效的几种情况
  15. 什么是bcd码数据传输通讯_数据传输 数据通讯
  16. 统信UOS系统安装mysql_统信UOS系统手动安装分区方案
  17. 行频、场频与分辨率、刷新率
  18. Hdmi 和vga 接口有什么区别?
  19. css 拉伸 resize —— 实现可拉伸的div(含限制拉伸的尺寸)
  20. 1. 不吹不擂,第一篇就能提升你对Bean Validation数据校验的认知

热门文章

  1. python怎么加载库_Python库如何安装和导入
  2. android流量显示插件,[android]仿360状态,种流量监控桌面浮动显示
  3. python使用virtualenv在本地新建虚拟环境
  4. LGBM模型取消打印日志(关闭日志)
  5. python list转dict
  6. python pandas 判断是否为空“nan”
  7. c语言二维数组总成绩,c语言5个人3科成绩总分和平均分,用二维数组
  8. python中if语句最多支持的分支是_Python多分支if语句的使用
  9. 字符串在Python中的本质是一个序列。 数字类型不是序列,不是可迭代对象,只能看做一个整体不可分割...
  10. 解决:无法将文件“obj\x86\Debug\Windows123.exe”复制到“bin\Debug\Windows123.exe”。