(一)单元测试和项目结合的方法

发表于:2007-9-20 12:22

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Love Sunny    来源:Love Sunny 的专栏

        单元测试要运用到实际项目中去,必须把单元测试代码和项目通过某种途径联系在一起。
        比如,在我的学习笔记1中,有一个工程:WindowsApplication12,这个工程中有Class1这个类,该类就是项目的实际代码,随后我在该工程中添加一个Class1Test的测试类,用来测试Class1中的一些方法。
        这个过程,就是一种结合方法:对每个需要测试的类,都在该类的工程下建立一个测试类。

        在我的实际经验中,接触到如下几种方法,以下进行举例说明,每种方法都有其特定使用环境,优缺点,供大家参考:
1 单元测试代码,直接写在需要被测试的类中。
        solution结构如下:
    

        代码如下:

Imports NUnit.Framework

<TestFixture()> _
Public Class Class1

    
''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' 查找最大值
    ''' </summary>
    ''' <param name="list">传入整数数组</param>
    ''' <returns>返回数组中的最大值</returns>
    ''' <remarks>
    ''' </remarks>
    ''' <history>
    '''     [TonyGong]    5/25/2006    Created
    ''' </history>
    ''' -----------------------------------------------------------------------------
    Function FindMax(ByVal list As Int32()) As Int32
        
Dim i As Int32
        
Dim max As Int32 = Int32.MinValue

        
For i = 0 To list.Length - 1
            
If list(i) > max Then
                max 
= list(i)
            
End If
        
Next

        
Return max

    
End Function



    
''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' 测试Class1类的FindMax方法
    ''' </summary>
    ''' <remarks>
    ''' </remarks>
    ''' <history>
    '''     [TonyGong]    5/25/2006    Created
    ''' </history>
    ''' -----------------------------------------------------------------------------
    <Test()> _
    
Public Sub FindMaxTest()
        
'
        Dim list1() As Int32 = {13104}
        
Dim list2() As Int32 = {13410}
        
Dim list3() As Int32 = {10314}
        
Dim list4() As Int32 = {-2-1-3}

        
Dim my As New Class1
        
'测试数组list1中的最大整数是不是10。
        Assert.AreEqual(10, my.FindMax(list1))

        
'测试边界值
        Assert.AreEqual(10, my.FindMax(list2))
        Assert.AreEqual(
10, my.FindMax(list3))

        
'测试负数数组,数组中最大值应该是-1
        Assert.AreEqual(-1, my.FindMax(list4))

    
End Sub



End Class



        运行Nunit,结果如下:
  

        这种方法的优点很明显:由于测试代码同被测试的方法放在一个类中,所以private等方法很容易被测试。但同时缺点也很明显,该类会被写得很复杂,估计很少会有人喜欢看这种代码,而且万一客户不需要这些代码的话,在最后部署的时候,关del测试代码,估计也是个大问题。

2 每写一个需要被测试的类,就写当前工程下新建一个相应的测试类,名字可以在被测试类后面加上Test以示区别。
        solution结构如下:
  

        代码就不写了。

        这种方法的优点是结构比较清晰,在比较小的工程中使用还算不错,修改测试代码也比较方法。缺点同样是部署时删除单元测试代码比较麻烦,同时solution太大,有很多project时,有很大局限性。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号