CUnit-Automated模式实例

2023-10-24 09:30
文章标签 模式 实例 automated cunit

本文主要是介绍CUnit-Automated模式实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.简介

Automated模式非交互式的。客户端启动测试运行,并将结果输出到XML文件。还可以将已注册测试和套件的列表也输出在XML中。可以调用函数CU_set_output_filename设置输出XML文件的文件名。调用函数CU_list_tests_to_file可以将测试Suite和Test也输出个另一个XML文件中。

2.测试报告

执行测试,执行成功后,会在当前目录下产生两个xml文件。

  • VO_UNITTEST-Listing.xml :对测试用例的报告
  • VO_UNITTEST-Results.xml :对测试结果的报告

要查看这两个文件,还需要使用如下xsl和dtd文件:

  • CUnit-List.dtd 和 CUnit-List.xsl用于解析列表文件。
  • CUnit-Run.dtd 和 CUnit-Run.xsl用于解析结果文件。

这四个文件在CUnit包里面有提供,安装之后在trunk/Share目录下。在查看结果之前,需要把这六个文件:
VO_UNITTEST-Listing.xml, VO_UNITTEST-Results.xml, CUnit-List.dtd, CUnit-List.xsl, CUnit-Run.dtd, CUnit-Run.xsl 拷贝到一个目录下,然后用浏览器打开两个结果的xml文件就可以了。如下图所示:
在这里插入图片描述
在这里插入图片描述

3.源码

最后附上上面运行测试的源码,VO_UnitTest_RegisterCommands实现代码跟上一篇Console模式的基本项目这里就不贴出来了。

void VO_UnitTest_EntryAutomated(void)
{CU_ErrorCode cu_err=CUE_SUCCESS;mVUT_FCT_ENTER();cu_err = CU_initialize_registry();if (cu_err!=CUE_SUCCESS){mVUT_TRACE((kVUT_NIV_CRITICAL,"CU_initialize_registry failed=%d.\n",cu_err));mVUT_RETURN;}cu_err = VO_UnitTest_RegisterCommands();if (cu_err!=CUE_SUCCESS){mVUT_TRACE((kVUT_NIV_CRITICAL,"VO_UnitTest_RegisterCommands failed=%d.\n",cu_err));CU_cleanup_registry();mVUT_RETURN;}/* Run all tests using the automated interface */CU_set_output_filename("VO_UNITTEST");CU_automated_run_tests();CU_list_tests_to_file();mVUT_TRACE((kVUT_NIV_INFO,"Test end, CU_cleanup_registry call\n"));CU_cleanup_registry();mVUT_RETURN;
}

4.内存信息

另外说一下,CUnit在最后测试结束调用CU_cleanup_registry时还会生成一个内存信息XML文件:CUnit-Memory-Dump.xml


CUnit - A Unit testing framework for C. 
http://cunit.sourceforge.net/ 
CUnit Memory Debugger Report 
Memory Allocation/Deallocation Records --------------------------------------------------------------------------------Pointer  Alloc File   Line Dealloc File Line Data Size 
0xcc9a50  TestDB.c     787  TestDB.c     716  24  
0xcc9a88  TestDB.c     792  TestDB.c     825  14  
0xcc9ab8  TestDB.c     787  TestDB.c     716  24  
0xcc9af0  TestDB.c     792  TestDB.c     825  14  
0xcc9b20  TestDB.c     665  TestDB.c     639  48  
0xcc9b70  TestDB.c     670  TestDB.c     720  9  
0xcc9b98  TestDB.c     787  TestDB.c     716  24  
0xccc908  TestDB.c     792  TestDB.c     825  15  
0xcccb50  TestDB.c     787  TestDB.c     716  24  
0xcccda0  TestDB.c     792  TestDB.c     825  16  
0xcccfe8  TestDB.c     787  TestDB.c     716  24  
0xccd238  TestDB.c     792  TestDB.c     825  16  
0xccd480  TestDB.c     787  TestDB.c     716  24  
0xccd6d0  TestDB.c     792  TestDB.c     825  16  
0xccd918  TestDB.c     665  TestDB.c     639  48  
0xcc9bb8  TestDB.c     670  TestDB.c     720  8  
0xccddb0  TestDB.c     787  TestDB.c     716  24  
0xcce000  TestDB.c     792  TestDB.c     825  14  
0xcce3b8  Automated.c  280  Automated.c  303  8  
0xcce3b8  Automated.c  280  Automated.c  303  9  
0xcce3b8  Automated.c  280  Automated.c  303  8  
0xcce810  TestRun.c    708  TestRun.c    826  32  
0xccea68  TestRun.c    717  TestRun.c    822  82  
0xccecf0  TestRun.c    726  TestRun.c    818  25  
0xccef40  TestRun.c    708  TestRun.c    826  32  
0xccf198  TestRun.c    717  TestRun.c    822  82  
0xccf420  TestRun.c    726  TestRun.c    818  28  
0xccf670  Automated.c  370  Automated.c  368  25  
0xccf670  Automated.c  370  Automated.c  426  28  
0xccfad8  TestRun.c    708  TestRun.c    826  32  
0xccfd30  TestRun.c    717  TestRun.c    822  82  
0xccffa0  TestRun.c    726  TestRun.c    818  26  
0xcd01f0  TestRun.c    708  TestRun.c    826  32  
0xcd0448  TestRun.c    717  TestRun.c    822  82  
0xcd06d0  TestRun.c    726  TestRun.c    818  26  
0xcd0920  TestRun.c    708  TestRun.c    826  32  
0xcd0b78  TestRun.c    717  TestRun.c    822  82  
0xcd0e00  TestRun.c    726  TestRun.c    818  29  
0xcd1058  TestRun.c    708  TestRun.c    826  32  
0xcd12b0  TestRun.c    717  TestRun.c    822  82  
0xcd1538  TestRun.c    726  TestRun.c    818  29  
0xcd1790  Automated.c  370  Automated.c  368  26  
0xcd19e0  Automated.c  370  Automated.c  426  29Cumulative Summary for Memory Debugger Dumper Run  
Valid Records  											46  
Invalid Records  										0  
Total Number of Allocation/Deallocation Records  		46  

这篇关于CUnit-Automated模式实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/274255

相关文章

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Java设计模式---迭代器模式(Iterator)解读

《Java设计模式---迭代器模式(Iterator)解读》:本文主要介绍Java设计模式---迭代器模式(Iterator),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录1、迭代器(Iterator)1.1、结构1.2、常用方法1.3、本质1、解耦集合与遍历逻辑2、统一

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

java String.join()方法实例详解

《javaString.join()方法实例详解》String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了... 目录bVARxMJava String.join() 方法详解1. 方法定义2. 基本用法2.1 拼接

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R