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

相关文章

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点

Java Stream流以及常用方法操作实例

《JavaStream流以及常用方法操作实例》Stream是对Java中集合的一种增强方式,使用它可以将集合的处理过程变得更加简洁、高效和易读,:本文主要介绍JavaStream流以及常用方法... 目录一、Stream流是什么?二、stream的操作2.1、stream流创建2.2、stream的使用2.

springboot项目中集成shiro+jwt完整实例代码

《springboot项目中集成shiro+jwt完整实例代码》本文详细介绍如何在项目中集成Shiro和JWT,实现用户登录校验、token携带及接口权限管理,涉及自定义Realm、ModularRe... 目录简介目的需要的jar集成过程1.配置shiro2.创建自定义Realm2.1 LoginReal

Python跨文件实例化、跨文件调用及导入库示例代码

《Python跨文件实例化、跨文件调用及导入库示例代码》在Python开发过程中,经常会遇到需要在一个工程中调用另一个工程的Python文件的情况,:本文主要介绍Python跨文件实例化、跨文件调... 目录1. 核心对比表格(完整汇总)1.1 自定义模块跨文件调用汇总表1.2 第三方库使用汇总表1.3 导

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

Apache Ignite缓存基本操作实例详解

《ApacheIgnite缓存基本操作实例详解》文章介绍了ApacheIgnite中IgniteCache的基本操作,涵盖缓存获取、动态创建、销毁、原子及条件更新、异步执行,强调线程池注意事项,避免... 目录一、获取缓存实例(Getting an Instance of a Cache)示例代码:二、动态

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA