`
liyiye
  • 浏览: 427108 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

(九)白盒测试实例--构建自己的单元测试框架2

阅读更多

完整的源代码如下:

1、UnitTest.h

  1. /*
  2.  * Copyright (c) 2008, 胡添发(hutianfa@163.com)
  3.  * 
  4.  * 简单的单元测试框架
  5.  *
  6.  */
  7. #include<stdio.h>
  8. #include<string.h>
  9. #include<time.h>
  10. #include<stdlib.h>
  11. /*
  12.  * VC中没有sleep函数,自己写一个
  13.  * wait单位是毫秒
  14.  */
  15. extern void sleep(clock_t wait);
  16. /*
  17.  * 判断是否取值为真
  18.  */
  19. void assertTrue(char *msg, bool actual);
  20. /*
  21.  * 判断预期结果和实际结果是否相符
  22.  */
  23. void assertEquals(char *msg, int expect, int actual);
  24. /*
  25.  * 初始化测试,开始计时
  26.  */
  27. void init();
  28. /*
  29.  * 结束测试,结束计时,打印报告
  30.  */
  31. void end();

        2、UnitTest.cpp

  1. /*
  2.  * Copyright (c) 2008, 胡添发(hutianfa@163.com)
  3.  * 
  4.  * 简单的单元测试框架
  5.  *
  6.  */
  7. #include "UnitTest.h"
  8. /*
  9.  * VC中没有sleep函数,自己写一个
  10.  * wait单位是毫秒
  11.  */
  12. void sleep(clock_t wait) 
  13.     clock_t goal; 
  14.     goal = wait + clock(); 
  15.     while( goal > clock() ) 
  16.     {
  17.         ; 
  18.     }
  19. /*
  20.  * 存放测试信息和错误信息的全局变量
  21.  */
  22. char *errors[100] = {""};
  23. int errorCount = 0;
  24. int testCount=0;
  25. time_t startTime, endTime;
  26. /*
  27.  * 添加错误信息
  28.  */
  29. void addError(char *msg)
  30. {
  31.     char error[100] = "Test '";
  32.     strcat(error, msg);
  33.     strcat(error, "' is failed!");
  34.     errors[errorCount] = new char[100];
  35.     strcpy(errors[errorCount], error);
  36.     errorCount ++;
  37. }
  38. /*
  39.  * 添加错误信息,带预期结果与实际结果参数
  40.  */
  41. void addError(char *msg, int expect, int actual)
  42. {
  43.     char error[100] = "Test '";
  44.     char num[10];
  45.     strcat(error, msg);
  46.     strcat(error, "' is failed!");
  47.     strcat(error, " Expected: ");
  48.     strcat(error, itoa(expect, num, 10));
  49.     strcat(error, " , actual: ");
  50.     strcat(error, itoa(actual, num, 10));
  51.     errors[errorCount] = new char[100];
  52.     strcpy(errors[errorCount], error);
  53.     errorCount ++;
  54. }
  55. /*
  56.  * 判断是否取值为真
  57.  */
  58. void assertTrue(char *msg, bool actual)
  59. {
  60.     sleep(10);
  61.     testCount++;
  62.     if(actual)
  63.     {
  64.         printf(".");
  65.     }
  66.     else
  67.     {
  68.         printf("F");
  69.         addError(msg);
  70.     }
  71. }
  72. /*
  73.  * 判断预期结果和实际结果是否相符
  74.  */
  75. void assertEquals(char *msg, int expect, int actual)
  76. {
  77.     sleep(10);
  78.     testCount++;
  79.     if(expect == actual)
  80.     {
  81.         printf(".");
  82.     }
  83.     else
  84.     {
  85.         printf("F");
  86.         addError(msg, expect, actual);
  87.     }
  88. }
  89. /*
  90.  * 测试报告
  91.  */
  92. void testReport()
  93. {
  94.     printf("\n\nTotal run Tests:");  //测试概要信息
  95.     printf("%d", testCount);
  96.     printf(", passed:%d", testCount-errorCount);
  97.     printf(", failed:%d\n", errorCount);
  98.     printf("Test escaped time: %6.3f seconds\n", (double)(endTime-startTime)/1000.0);
  99.     if(errorCount>0)   //测试失败的详细信息
  100.     {
  101.         printf("\n**************** Failed Test's Detail ****************\n\n");
  102.         
  103.         for(int i=0; i<errorCount; i++)
  104.         {
  105.             printf("  %d: ", i+1);
  106.             printf(errors[i]);
  107.             printf("\n");
  108.         }
  109.         printf("\n**************** End of Failed Detail ****************\n\n");
  110.     }
  111.     else   //所有测试都通过
  112.     {
  113.         printf("\n****** All Tests had Passed! ******\n\n");
  114.     }
  115. }
  116. /*
  117.  * 初始化测试,开始计时
  118.  */
  119. void init()
  120. {
  121.     printf("\n****** Test start ******\n");
  122.     startTime = clock();
  123. }
  124. /*
  125.  * 结束测试,结束计时,打印报告
  126.  */
  127. void end()
  128. {
  129.     endTime = clock();
  130.     testReport();
  131. }

        3、实际测试结果截图:

分享到:
评论

相关推荐

    白盒测试实例之九——构建自己的单元测试框架(下)

    实例白盒 白盒测试实例之九——构建自己的单元测试框架(下) 软件测试 完整的源代码如下: 1、UnitTest.h 1./* 2.*Copyright(c)2008,胡添发 3.* 4.*简单的单元测试框架 5.* 6.*/ 7. 8.#include 9.#...

    白盒测试学习文档,和工具介绍

    - 实际项目中的白盒测试应用实例,帮助读者理解如何在实际场景中应用所学知识。 通过这份白盒测试学习文档,无论是初学者还是有经验的测试工程师,都能从中获取到有价值的理论知识和实践经验,提升自己的测试技能...

    Junit白盒测试学习文档

    Junit作为Java领域最常用的单元测试框架,是进行白盒测试的重要工具。本文档将深入探讨Junit4的基础知识和应用技巧,帮助开发者提升测试效率和代码质量。 **一、Junit简介** Junit是由Erich Gamma和Kent Beck共同...

    软件测试基础-单元测试

    常用的单元测试框架包括JUnit(Java)、pytest(Python)、NUnit(.NET)等,它们提供了丰富的API和测试模板,支持自动化测试、断言检查等功能,帮助开发者快速构建和运行测试用例。 #### 避免单元测试的常见误区 ...

    如何利用JUnit进行单元测试.ppt

    它是用于单元测试框架体系xUnit的一个实例,主要用于白盒测试。 四种Java测试工具简介 -------------------- ### 1. JUnit JUnit是一个开发源代码的Java测试框架,用于编写和运行可重复的测试。它是用于单元测试...

    单元测试用例实例设计说明

    单元测试是软件开发过程中的重要环节,用于验证代码的各个独立模块是否按预期工作。测试用例的设计是单元测试的核心,它确保了测试的覆盖率和有效性。本文将深入探讨如何编写测试用例,以及黑盒测试和白盒测试的区别...

    JUnit和单元测试简介PDF格式

    ### JUnit和单元测试简介 #### 一、基础知识与概念 ...总之,JUnit不仅是一个强大的单元测试框架,而且通过其丰富的特性和良好的社区支持,成为Java开发人员进行测试驱动开发(TDD)的重要工具之一。

    junit基本介绍,junit常用的接口和类,如何编写测试代码

    JUnit是一种开源的Java测试框架,它属于xUnit家族的一员,主要用于单元测试,特别是白盒测试和回归测试。白盒测试是指测试人员完全了解程序内部的逻辑结构,可以针对性地进行测试;而回归测试是在软件或环境进行修复...

    sofa-acts:ACTS是基于数据模型驱动程序的白盒测试框架

    ACTS 是基于数据模型驱动测试引擎的的新一代测试框架,它的数据以 YAML 为载体,在此上构建基于数据模型的驱动引擎,适配 TestNg+SOFABoot 的测试上下文环境;支持高效、标准化构建用例,可视化编辑测试数据,精细化...

    东北大学软件测试课件

    东北大学所提供的软件测试课件,为学生和从业者提供了一套全面、系统的教学材料,覆盖了从黑盒测试到白盒测试,再到单元测试和系统测试的全方位知识体系。 黑盒测试,作为一种功能性测试方法,它的核心理念是从用户...

    Junit实例图解,Junit快速入门

    《Junit实例图解:快速掌握单元测试框架》 Junit是Java开发中广泛使用的单元测试框架,它为开发者提供了一种便捷的方式来编写和执行针对单个代码单元的测试。本文将通过实例图解的方式,逐步介绍如何在Eclipse环境...

    高效软件测试自动化软件测试自动化

    - **单元测试**:针对单个模块或函数进行测试。 - **集成测试**:验证不同模块之间的接口是否正常工作。 - **回归测试**:确保新版本没有引入新的错误或破坏旧功能。 #### 六、实例应用与练习 书中不仅提供了理论...

    不看后悔!软件测试18张精品知识脑图,最全总结,快速入门!

    它包括单元测试、集成测试、系统测试和验收测试等阶段。 2. **测试类型**: - 单元测试:针对代码模块进行测试,确保每个小部分功能正确。 - 集成测试:多个模块组合后的测试,检查模块间的交互是否正确。 - ...

    软件测试面试题

    2. **黑盒测试与白盒测试**: - **黑盒测试**:关注软件功能,不考虑内部结构,主要方法有等价类划分、边界值分析、因果图等。 - **白盒测试**:关注程序结构,依据代码逻辑进行测试,如路径覆盖、条件覆盖等。 3...

    软件测试的光盘!!!

    2. **测试方法论**:有多种测试方法论,如黑盒测试(关注功能行为,不考虑内部结构)、白盒测试(关注代码逻辑和结构)、灰盒测试(结合黑盒和白盒测试)以及探索性测试(强调测试者自主发现和解决问题)。...

    JUnit单元测试

    JUnit 是一个广泛使用的Java编程语言的单元测试框架,它的核心目标是帮助开发者对代码进行单元测试,确保每个独立的代码单元都能按预期工作。单元测试通常被视为白盒测试,因为它涉及对代码内部逻辑的深入理解。 ...

    软件测试系列最佳实践

    - **1.6 34个方法**:介绍了34种测试方法和技术,这些方法和技术可以帮助测试人员更有效地发现缺陷,包括但不限于黑盒测试、白盒测试、压力测试等。 #### 第2章 测试架构从何而来 第二章深入探讨了测试架构的概念...

    软件测试面试经典题2024年

    - **JUnit:** 用于Java应用程序的单元测试框架,能够帮助开发者编写和运行测试用例。 #### 三、理论与技能类 1. **敏捷开发与敏捷测试** - **敏捷理念:** 强调快速响应变化、迭代开发、持续交付高质量的软件...

Global site tag (gtag.js) - Google Analytics