广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言实现单元测试的示例详解
  • 150
分享到

C语言实现单元测试的示例详解

2024-04-02 19:04:59 150人浏览 安东尼
摘要

目录前沿使用前提测试框架如下测试方法编写文件验证前沿 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际

前沿

单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

在网上找了找C语言都没有类似java 的junit单元测试 ,反复测试自己写的模块非常费劲,特别是交叉模块测试的时候根本就无法弄

因为一个程序只允许一个main方法,如果其他地方存在了,那么就会报错,这就导致了测完A模块想要测试B模块就需要把A模块测试的相关内容删除,这样会出现什么问题呢? 如果后期我们对A模块的内容进行了修改,那么是不是需要在重新写一套测试Demo, 这样非常浪费时间和精力 ,没办法只能自己开发一套类似的,来协助本地开发进行测试代码

使用前提

自己必须有集合数据结构和hash结构

测试框架如下

#ifndef STUDY_TESTCORE_H
#define STUDY_TESTCORE_H
#include "../structure/charHash.h"
typedef int boolean;//定义一个布尔类型
#define TRUE 1
#define FALSE 0
#define EXECUTE_TEST_RUN_METHOD(method) void (*testMethod)() = method;testMethod();
typedef  struct testCore{
    HashMap *methodAll;      // 方法集合
    HashMap *methodAllState; //方法状态

} TestCore;
extern  TestCore *testCore;
void   test_Run_MethodAll(void (*initMethod)());
void test_Run_Method(char *methodName,void (*initMethod)());
void addTestMethodName( char *methodName,void *method,boolean state) ;

#endif //STUDY_TESTCORE_H
#include "testcore.h"
#include "malloc.h"
#include "string.h"
TestCore *testCore = NULL;
//创建一个测试环境
TestCore *createTestCore() {
    TestCore *testCore = (TestCore *) malloc(sizeof(TestCore));
    testCore->methodAll = createHashMap(200);
    testCore->methodAllState = createHashMap(200);
    return testCore;
}

void addTestMethodName( char *methodName,void *method,boolean state) {
    if(testCore == NULL) {
        testCore = createTestCore();
    }
    putHashMap(testCore->methodAll, methodName,method);
    putHashMap(testCore->methodAllState, methodName,state);
}



void test_Run_Method(char *methodName,void (*initMethod)()) {
    initMethod();//初始化方法
    void *method = getHashMap(testCore->methodAll, methodName);
    if(method != NULL) {
        EXECUTE_TEST_RUN_METHOD(method)
    }
}

void   test_Run_MethodAll(void (*initMethod)()) {
    initMethod();//初始化方法
    HashMapiterator *pIterator = createHashMapIterator(testCore->methodAllState);
    while(hasNextHashMapIterator(pIterator)) {
        CharKvLinkednode *pNode = nextHashMapIterator(pIterator);
       if(pNode->value == (void *)TRUE) {
           void *method = getHashMap(testCore->methodAll, pNode->key);
           EXECUTE_TEST_RUN_METHOD(method)
       }
    }
}

测试方法编写文件

注意: 测试文件的方法名称不要一样,否则后面会把前面的给顶替了

#ifndef STUDY_TESTMETHOD_H
#define STUDY_TESTMETHOD_H
#include "testcore.h"
void initMethod();
#endif //STUDY_TESTMETHOD_H
#include <stdio.h>
#include "testmethod.h"

void  test_1(){
    printf("test_1\n");
}
void  test_2(){
    printf("test_2\n");
}
void initMethod(){
    addTestMethodName("test_1",test_1,TRUE);
    addTestMethodName("test_2",test_2,TRUE);
}

验证

#include <stdio.h>
#include "unittest/testcore.h"
#include "unittest/testmethod.h"
int main() {
    printf("==============test_Run_MethodAll=============\n");
    //批量测试
    test_Run_MethodAll(initMethod);
    printf("==============test_Run_Method=============\n");
    //点对点测试
    test_Run_Method("test_1",initMethod);
    return (0);
}

现在我就能随心所欲的测试了,想测试那个模块就测试那个模块,而且还可批量测试

到此这篇关于C语言实现单元测试的示例详解的文章就介绍到这了,更多相关C语言单元测试内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言实现单元测试的示例详解

本文链接: https://www.lsjlt.com/news/166698.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言实现单元测试的示例详解
    目录前沿使用前提测试框架如下测试方法编写文件验证前沿 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际...
    99+
    2022-11-13
  • Go 语言进阶单元测试示例详解
    目录前言测试单元测试规则示例assert覆盖率依赖Mock基准测试前言 本文从单元测试实践角度出发,提升对代码质量的意识。 本文内容主要包括:单元测试、Mock测试、基准测试。 测...
    99+
    2023-01-28
    Go 语言单元测试 Go 单元测试
  • Go语言工程实践单元测试基准测试示例详解
    目录背景测试单元测试演示覆盖率依赖文件处理Mock基准测试小结背景 测试的出现是为了避免项目中出现重大事故 测试是避免事故的最后一道屏障 测试 单元测试的覆盖率在一定程度上而言,...
    99+
    2023-02-05
    Go语言单元测试基准测试 Go语言测试
  • Go语言基础单元测试与性能测试示例详解
    目录概述单元测试代码说明如下问题注意性能测试基本使用自定义测试时间概述 测试不是Go语言独有的,其实在很多语言都有测试,例如:Go、Java、Python… 要想成为一名合格的大牛,...
    99+
    2022-11-12
  • Go语言单元测试的示例分析
    小编给大家分享一下Go语言单元测试的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、单元测试分类及其概念1.基本分类测试函数 函数前缀为Test 主要用...
    99+
    2023-06-29
  • Go语言单元测试与性能测试示例分析
    这篇文章主要讲解了“Go语言单元测试与性能测试示例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言单元测试与性能测试示例分析”吧!概述测试不是Go语言独有的,其实在很多语言都有测试...
    99+
    2023-06-25
  • Go语言单元测试超详细解析
    目录一、单元测试分类及其概念1.基本分类2.细说单元测试分类二、结合代码细说每一种测试1.基准测试2.组测试与子测试三、pprof调试工具1.对主函数进行传参2.pprof性能调优前...
    99+
    2022-11-13
  • C语言实现栈的示例详解
    目录前言一. 什么是栈二. 使用什么来实现栈三. 栈的实现3.1 头文件3.2 函数实现3.3 完整代码四. 栈的用处前言 前一段时间,我们试着用C语言实现了数据结构中的顺序表,单链...
    99+
    2022-11-13
  • Golang 单元测试和基准测试实例详解
    目录前言Go 单元测试单元测试覆盖率基准测试前言 多人协作的项目里,要保证代码的质量,自然离不开单元测试。开发完一个功能后肯定要对所写的代码进行测试,测试没有问题之后再合并到代码库供...
    99+
    2022-11-11
  • C语言实现队列的示例详解
    目录前言一. 什么是队列二. 使用什么来实现栈三. 队列的实现3.1头文件3.2 函数的实现四.完整代码前言 前一段时间,我们试着用C语言实现了数据结构中的顺序表,单链表,双向循环链...
    99+
    2022-11-13
  • C语言实现阶乘的示例详解
    目录前言1.阶乘实现1.1理论步骤1.2实践结果2.连续乘层相加实现2.1理论步骤2.2实践结果前言 在现实中,我们做数学题总会遇到阶乘问题,这在计算机中也不例外。 那我们应该怎么实...
    99+
    2022-11-13
  • Go语言单元测试和基准测试实例代码分析
    本篇内容主要讲解“Go语言单元测试和基准测试实例代码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go语言单元测试和基准测试实例代码分析”吧!背景测试的出现是为了避免项目中出现重大事故测试是...
    99+
    2023-07-05
  • 利用Python中unittest实现简单的单元测试实例详解
    前言 单元测试的重要性就不多说了,可恶的是Python中有太多的单元测试框架和工具,什么unittest, testtools, subunit, coverage, testrepository, nos...
    99+
    2022-06-04
    详解 实例 单元测试
  • Go单元测试利器testify使用示例详解
    目录testifyassert 包require 包mock 包suite 包testify 在团队里推行单元测试的时候,有一个反对的意见是:写单元测试耗时太多。且不论这个意见对错...
    99+
    2022-12-15
    Go 单元测试testify Go testify
  • 前端自动化测试Vue中TDD和单元测试示例详解
    目录1、简单用例入门2、快照测试3、覆盖率测试4、结合 Vuex 进行测试1、简单用例入门 Vue 提供了 @vue/test-utils 来帮助我们进行单元测试,创建 Vue 项...
    99+
    2023-02-14
    Vue TDD单元测试 Vue 前端自动化测试
  • python3+telnetlib实现简单自动测试示例详解
    目录1 telnetlib介绍 1.1 简介1.2 库常用函数及使用1.2.1 建立连接1.2.2 发送命令1.2.3 读取返回数据1.2.4 关闭连接1.3 使用示例2 ...
    99+
    2022-11-12
  • 一文详解Go语言单元测试的原理与使用
    目录前言为什么要引用单元测试类单元测试基本介绍优点Testing规范基本使用Golang运行命令行案例前言 为什么要引用单元测试类 传统方法的缺点分析 不方便,我们需要在main函数...
    99+
    2022-11-11
  • Android编程单元测试实例详解(附源码)
    本文实例讲述了Android编程单元测试。分享给大家供大家参考,具体如下: 完整实例代码代码点击此处本站下载。 本文是在上一篇文章《java编程之单元测试(Junit)实例分析...
    99+
    2022-06-06
    单元 单元测试 源码 测试 Android
  • C语言实现冒泡排序算法的示例详解
    目录1. 问题描述2. 问题分析3. 算法设计动图演示4. 程序设计设计一设计二结论5. 流程框架6. 代码实现7. 问题拓展1. 问题描述 对N个整数(数据由键盘输入)进行升序排列...
    99+
    2022-11-13
  • C语言实现生成新春福字的示例详解
    目录主要代码字面量以及数据结构定义一个回调函数,刷新福字应用初始化程序主程序效果展示快新年了,支付宝扫福活动又开始了,每次都要百度找福,这次不想找了,自己写一个程序生成各种字体的福字...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作