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

相关文章

Nginx服务器部署详细代码实例

《Nginx服务器部署详细代码实例》Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,:本文主要介绍Nginx服务器部署的相关资料,文中通过代码... 目录Nginx 服务器SSL/TLS 配置动态脚本反向代理总结Nginx 服务器Nginx是一个‌高性

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

Go语言实现桥接模式

《Go语言实现桥接模式》桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化,本文就来介绍一下了Go语言实现桥接模式,感兴趣的可以了解一下... 目录简介核心概念为什么使用桥接模式?应用场景案例分析步骤一:定义实现接口步骤二:创建具体实现类步骤三:定义抽象类步骤四:创建扩展抽象类步

springboot+mybatis一对多查询+懒加载实例

《springboot+mybatis一对多查询+懒加载实例》文章介绍了如何在SpringBoot和MyBatis中实现一对多查询的懒加载,通过配置MyBatis的`fetchType`属性,可以全局... 目录springboot+myBATis一对多查询+懒加载parent相关代码child 相关代码懒

C++中的解释器模式实例详解

《C++中的解释器模式实例详解》这篇文章总结了C++标准库中的算法分类,还介绍了sort和stable_sort的区别,以及remove和erase的结合使用,结合实例代码给大家介绍的非常详细,感兴趣... 目录1、非修改序列算法1.1 find 和 find_if1.2 count 和 count_if1

Redis中群集三种模式的实现

《Redis中群集三种模式的实现》Redis群集有三种模式,分别是主从同步/复制、哨兵模式、Cluster,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1. Redis三种模式概述2、Redis 主从复制2.1 主从复制的作用2.2 主从复制流程2

MySQL中如何求平均值常见实例(AVG函数详解)

《MySQL中如何求平均值常见实例(AVG函数详解)》MySQLavg()是一个聚合函数,用于返回各种记录中表达式的平均值,:本文主要介绍MySQL中用AVG函数如何求平均值的相关资料,文中通过代... 目录前言一、基本语法二、示例讲解1. 计算全表平均分2. 计算某门课程的平均分(例如:Math)三、结合

深入理解MySQL流模式

《深入理解MySQL流模式》MySQL的Binlog流模式是一种实时读取二进制日志的技术,允许下游系统几乎无延迟地获取数据库变更事件,适用于需要极低延迟复制的场景,感兴趣的可以了解一下... 目录核心概念一句话总结1. 背景知识:什么是 Binlog?2. 传统方式 vs. 流模式传统文件方式 (非流式)流

PyQt6 键盘事件处理的实现及实例代码

《PyQt6键盘事件处理的实现及实例代码》本文主要介绍了PyQt6键盘事件处理的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起... 目录一、键盘事件处理详解1、核心事件处理器2、事件对象 QKeyEvent3、修饰键处理(1)、修饰键类

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

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