在进行测试驱动开发的过程中,编写测试用例是比较繁琐的,但是更繁琐的是使用ComUnit框架进行测试的过程中,需要在频繁进行测试用例名称的注册,如下边的代码:

' Return the name of the different test case methods in this test container
Public Property Get ITestContainer_TestCaseNames() As Variant()
    ' TODO: add the names of your test methods as a parameter into the Array() function
    ITestContainer_TestCaseNames = Array()
End Property

这很好,但是测试用例的名称的注册、删除、修改的过程就麻烦了,需要改好多地方,时间长了,Array就好长的,周末在回家的路上又开始翻看《重构》这本书, Martin Fowler提到,在Junit框架中,如果测试用例的名称如果是固定前缀的,那么,就不需要频繁注册测试用例名称了,嗯,这个方法很好,至少我这个懒人很喜欢,经过研究,利用TLI很容易就实现了在VB6中得这种反射用法,代码如下:

' Return the name of the different test case methods in this test container
Public Property Get ITestContainer_TestCaseNames() As Variant()
    ' TODO: add the names of your test methods as a parameter into the Array() function
    'ITestContainer_TestCaseNames = Array()
    ITestContainer_TestCaseNames = AutoGetTestCaseNames
End Property

'Auto get testcasenames
'TestCaseName prefix must is "Test_"
Private Function AutoGetTestCaseNames() As Variant()
       Dim TypeLib As Object
       Dim Prop   As Object
       Dim i As Integer
       Dim vHas As Boolean
       Dim v() As Variant
       Set TypeLib = CreateObject("TLI.TLIApplication")
       Set TypeLib = TypeLib.InterfaceInfoFromObject(Me)
       For Each Prop In TypeLib.Members
            If Prop.InvokeKind = INVOKE_FUNC Then
                If UCase(VBA.Left(Prop.Name, 5)) = UCase("Test_") Then
                    If vHas = False Then
                        vHas = True
                        ReDim Preserve v(0)
                    Else
                        ReDim Preserve v(UBound(v) + 1)
                    End If
                    v(UBound(v)) = Prop.Name
                End If
            End If
       Next
       Set TypeLib = Nothing
       Set Prop = Nothing
       On Error GoTo onErrors:
       AutoGetTestCaseNames = v
       Exit Function
onErrors:
       AutoGetTestCaseNames = Array()
End Function

测试用例如下:

    Public Sub Test_Ver(oTestResult As TestResult)
         With oTestResult
            f.Config App.Path & "\TestMatter\FileClass\ver.exe"
            .Assert f.Ver() = "2.0.0.30", "0001"
            f.Config App.Path & "\TestMatter\FileClass\ver.txt"
            On Error GoTo onErrors
            f.Ver
            .Assert False, "0002"
onErrors:
         End With
    End Sub

利用这段代码所有Test_开头得测试用例,系统会自动发现,就不需要频繁注册用例名称了,感觉爽。

现在才感受到开源之美,很多小功能,自己修订就好了,而且用起来也好舒服。

点滴:

以前也看过几遍Refactoring这本书了,每次都有新得收获,最近采用ComUnit进行开发后,效率真的不错,而且开发方式也有了本质得变化,测试驱动开发必须经过实践,才能感受到其中得乐趣。

转载于:https://www.cnblogs.com/Duiker/archive/2005/10/24/260699.html

VB6-改造ComUnit(免除用例名称注册)相关推荐

  1. 使用WINS服务器实现跨网段名称注册解析和释放

    2.1 示例:使用WINS服务器实现名称注册解析和释放 实验目的: ü 安装WINS服务器 ü 配置计算机使用WINS服务器实现计算机名称注册,名称解析和名称释放 ü 查看WINS服务器名称注册 企业 ...

  2. 以安装软件对注册表的影响为例 探究注册表作用

    前言 以前安装软件或者改系统的某个设置的时候,曾经涉及到过注册表的一些操作.但是对注册表一直处于只知道名字的状态,今天闲来无事想要对注册表有所了解,在网上一搜索,发现大多数人都是复制粘贴,毫无诚意可言 ...

  3. PHP设计模式 二 (单例 工厂 注册)

    单例模式 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源. ...

  4. Spring boot+mybatis 编写接口(例:注册账号)

    一.新建项目,连接数据库(略) 项目文件图片如下 图片: 二.在store数据库中创建表t_user CREATE TABLE t_user ( uid INT AUTO_INCREMENT COMM ...

  5. oracle 更改实便例名称,大家好,请教在oracle中能否获取update记录 所涉及的字段的名称?如能实现的话,请教相关实现方法。谢谢~...

    可以写个触发器来记录的吧,参考下面看看, create or replace trigger tg_tf_pr_order_test_tg after update or delete on tf_p ...

  6. (软件工程)用例说明模板

    在画完用例图后,往往需要为图中的用例写用例说明,使得这些用例更加的清楚,流程更加完整 其中一种用例说明的模板如下: 用例编号: 用例名称:(跟用例图一致) 执行者: 用例说明:(大致描述这个功能) 前 ...

  7. (附源码)小程序 图书管理系统 毕业设计 250858

    Node.js图书管理小程序的开发 摘 要 大数据时代下,数据呈爆炸式地增长.为了迎合信息化时代的潮流和信息化安全的要求,利用互联网服务于其他行业,促进生产,已经是成为一种势不可挡的趋势.在图书馆管理 ...

  8. (附源码)Node.js图书管理小程序的开发 毕业设计 250858

    Node.js图书管理小程序的开发 摘 要 大数据时代下,数据呈爆炸式地增长.为了迎合信息化时代的潮流和信息化安全的要求,利用互联网服务于其他行业,促进生产,已经是成为一种势不可挡的趋势.在图书馆管理 ...

  9. 安卓APP源码和设计报告——小说阅读器

    班级 姓名 学号 答辩情况 考核项 满分成绩 得分 掌握计算机系统软硬件资源管理的原理,能够设计针对计算机领域复杂工程问题的解决方案,设计满足特定需求的软硬件系统,并具有对解决方案在特定约束条件下进行 ...

最新文章

  1. idea 代码格式化插件_IDEA非常棒的插件,阿里巴巴约定成文的代码公约规范
  2. LINUX内核完全注释
  3. js加密代码的分析[转]
  4. 博客园的神回复,程序猿的奇葩神回复[连载][二]
  5. for update在mysql中使用
  6. 如何查看python的工作目录_Python3基础 os listdir curdir查看当前工作目录的所有文件的名字...
  7. 一天天过得很快啊,今天大家都干了啥?我们拿出来晒晒
  8. python3速查参考- python基础 5 - 常用的文件操作
  9. 在Docker上运行微服务
  10. kinect2.0 之摄像头
  11. SQL基础(一):安装MySQL以及一些简单操作
  12. logback MDC线上问题快速定位神器
  13. Tensorflow实现网络---Resnet
  14. 2017年11月8日最新仿互站导航t5友价商城-9套模板首页都增加微信登陆
  15. ker矩阵是什么意思_矩阵光学
  16. 常见Linux系统下载站
  17. background-image
  18. php webmail,10个基于Ajax的PHP Webmail客户端
  19. Unity UGUI图文混排源码(二)
  20. 电源的电流大会烧毁电流吗

热门文章

  1. Python——字典生成式
  2. c mysql查询年月日_mysql查询指定日期时间内的sql语句及原理
  3. vscode python debug venv_Visual Studio Code Python开发调试环境设置
  4. 模式识别:聚类分析2020.05.27class
  5. Tendermint推出2000万美元风投基金,促进Cosmos发展
  6. Yearn V2 Vaults Swap发布,目前未经审核
  7. uTools:一个方法“改变”uTools的插件安装/数据目录
  8. 用户数据销售额分析动态大屏看板+大屏数据可视化图表组件(折线图+圆柱图+散点图+饼图+漏斗图+雷达图+水位图)+智能web端高保真大数据动态可视化大屏看板+中国动态地图+智慧电商实时动态数据大屏看板
  9. Arrays工具、二维数组以及LeetCode练习题
  10. Django - 路由系统