首先,單元測試的目的,我覺得最主要有以下幾點:
1,可以保證code實現的功能和我們期望的一致。
2,當我們增加了新的功能時,常常會破壞原有的代碼而不自知,n久之后,突然發現某詭異bug,需要花費很久才能查出來。而有了單元測試,每當你添加新功能,以及新功能的單元測試代碼之后,運行一下這個工程的單元測試,馬上就能看到你的新功能是否破壞了你的原有功能。
當然,前提是單元測試寫的夠完整。
3,通過單元測試,可以找到很多不易發現的bug,比如邊界條件錯誤等。這會使得我們的程序更加健壯。
4,對原有代碼編寫單元測試,常常會發現原有代碼由于耦合度過高,不容易測試,這時候,通過令代碼更加容易測試而去改善代碼得設計。測試驅動重構?汗。。。。。
先舉個簡單的例子來說明下單元測試的功能,具體使用NUnit的方法,后面再說吧,現在就只用例子來說明下NUnit的功能。
環境為.net1.1 vb.net +NUnit2.27
我編了一個對傳入整數數組,查找出最大值的方法,代碼如下:
1
2Public Class Class1Class Class1
3 ''' -----------------------------------------------------------------------------
4 ''' <summary>
5 ''' 查找最大值
6 ''' </summary>
7 ''' <param name="list">傳入整數數組</param>
8 ''' <returns>返回數組中的最大值</returns>
9 ''' <remarks>
10 ''' </remarks>
11 ''' <history>
12 ''' [Tony] 2006-4-20 Created
13 ''' </history>
14 ''' -----------------------------------------------------------------------------
15 Public Function FindMax()Function FindMax(ByVal list As Int32()) As Int32
16 Dim i As Int32
17 Dim max As Int32
18
19 For i = 0 To list.Length - 1
20 If list(i) > max Then
21 max = list(i)
22 End If
23 Next
24
25 Return max
26 End Function
27
28End Class
然后編寫測試類:
1Imports NUnit.Framework
2
3<TestFixture()> _
4Public Class Class1TestClass Class1Test
5
6 ''' -----------------------------------------------------------------------------
7 ''' <summary>
8 ''' 測試Class1類的FindMax方法
9 ''' </summary>
10 ''' <remarks>
11 ''' </remarks>
12 ''' <history>
13 ''' [Tony] 2006-4-20 Created
14 ''' </history>
15 ''' -----------------------------------------------------------------------------
16 <Test()> _
17 Public Sub FindMaxTest()Sub FindMaxTest()
18 '定義一個數組
19 Dim list1 As Int32() = {1, 3, 10, 4}
20
21 Dim my As New Class1
22 '測試數組list1中的最大整數是不是10。
23 Assert.AreEqual(10, my.FindMax(list1))
24 End Sub
25End Class
運行NUnit,
文章來源于領測軟件測試網 http://www.kjueaiud.com/