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

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

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

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

3 solution有很多个工程时,专门新增加一些工程,用于写单元测试,比如有一个ClassLibrary3工程,则建一个TestForClassLibrary3工程,单元测试类放到这个工程中去。
        solution结构如下:

 

        注意,测试工程要引用被测试工程。

        代码如下:

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


End Class


 

Imports NUnit.Framework
Imports ClassLibrary3

<TestFixture()> _
Public Class Class1Test
    
Public Sub New()

    
End Sub


    
''' -----------------------------------------------------------------------------
    ''' <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

        由于是以工程为单位,所以部署起来很容易,只要把这几个工程去掉就可以了,将来再要用,也只要加上就可以了。不过操作相对来说比较繁琐,没有前2种方法便捷。

4 以上3种方法都需要在项目的solution中增加东西,但如果你的项目不允许你增加任何测试类或工程(虽然感觉很愚蠢,但的确很多公司不允许程序员这么做),或者你根本没有权限增加工程或文件,这3种方法将都不能使用,这时可以用第4种方法。
        比如你想测试ClassLibrary3工程下的Class1类,你可以先build你的项目,生成ClassLibrary3工程的dll文件,然后在你本地建一个测试工程,引用这个dll,就可以不需要修改你的项目了。
        测试solution结构如下(这个solution是在你电脑本地的,与你的项目没有关系):
   

        测试代码如下:

Imports NUnit.Framework

<TestFixture()> _
Public Class Class1Test
    
Public Sub New()

    
End Sub


    
''' -----------------------------------------------------------------------------
    ''' <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



        这种方法的最大优点是不需要修改你的项目,不过缺点也很多,不够灵活,操作复杂等。

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

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号