VB6-改造ComUnit(免除用例名称注册)

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

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

这很好,但是测试用例的名称的注册、删除、修改的过程就麻烦了,需要改好多地方,时间长了,Array就好长的,周末在回家的路上又开始翻看《重构》这本书, Martin Fowler提到,在Junit框架中,如果测试用例的名称如果是固定前缀的,那么,就不需要频繁注册测试用例名称了,嗯,这个方法很好,至少我这个懒人很喜欢,经过研究,利用TLI很容易就实现了在VB6中得这种反射用法,代码如下:
None.gif '  Return the name of the different test case methods in this test container
None.gif
Public   Property   Get  ITestContainer_TestCaseNames()  As  Variant()
None.gif    
'  TODO: add the names of your test methods as a parameter into the Array() function
None.gif
     ' ITestContainer_TestCaseNames = Array()
None.gif
    ITestContainer_TestCaseNames  =  AutoGetTestCaseNames
None.gif
End Property
None.gif
None.gif
' Auto get testcasenames
None.gif'
TestCaseName prefix must is "Test_"
None.gif
Private   Function  AutoGetTestCaseNames()  As  Variant()
None.gif       
Dim  TypeLib  As   Object
None.gif       
Dim  Prop    As   Object
None.gif       
Dim  i  As   Integer
None.gif       
Dim  vHas  As   Boolean
None.gif       
Dim  v()  As  Variant
None.gif       
Set  TypeLib  =   CreateObject ( " TLI.TLIApplication " )
None.gif       
Set  TypeLib  =  TypeLib.InterfaceInfoFromObject(Me)
None.gif       
For   Each  Prop In TypeLib.Members
None.gif            
If  Prop.InvokeKind  =  INVOKE_FUNC  Then
None.gif                
If   UCase (VBA.Left(Prop.Name,  5 ))  =   UCase ( " Test_ " Then
None.gif                    
If  vHas  =   False   Then
None.gif                        vHas 
=   True
None.gif                        
ReDim  Preserve v( 0 )
None.gif                    
Else
None.gif                        
ReDim  Preserve v( UBound (v)  +   1 )
None.gif                    
End   If
None.gif                    v(
UBound (v))  =  Prop.Name
None.gif                
End   If
None.gif            
End   If
None.gif       
Next
None.gif       
Set  TypeLib  =   Nothing
None.gif       
Set  Prop  =   Nothing
None.gif       
On   Error   GoTo  onErrors:
None.gif       AutoGetTestCaseNames 
=  v
None.gif       
Exit   Function
None.gifonErrors:
None.gif       AutoGetTestCaseNames 
=   Array ()
None.gif
End Function

测试用例如下:
None.gif      Public   Sub  Test_Ver(oTestResult  As  TestResult)
None.gif         
With  oTestResult
None.gif            f.Config App.Path 
&   " \TestMatter\FileClass\ver.exe "
None.gif            .Assert f.Ver() 
=   " 2.0.0.30 " " 0001 "
None.gif            f.Config App.Path 
&   " \TestMatter\FileClass\ver.txt "
None.gif            
On   Error   GoTo  onErrors
None.gif            f.Ver
None.gif            .Assert 
False " 0002 "
None.gifonErrors:
None.gif         
End   With
None.gif    
End Sub


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

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

点滴:

以前也看过几遍Refactoring这本书了,每次都有新得收获,最近采用ComUnit进行开发后,效率真的不错,而且开发方式也有了本质得变化,测试驱动开发必须经过实践,才能感受到其中得乐趣。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值