| Tony Gong的技术Blog |
|
|||
| 技术旅途中蹒跚的行者 | ||||
|
公告
日历
统计
导航 |
单元测试要运用到实际项目中去,必须把单元测试代码和项目通过某种途径联系在一起。
比如,在我的学习笔记1中,有一个工程:WindowsApplication12,这个工程中有Class1这个类,该类就是项目的实际代码,随后我在该工程中添加一个Class1Test的测试类,用来测试Class1中的一些方法。 这个过程,就是一种结合方法:对每个需要测试的类,都在该类的工程下建立一个测试类。 在我的实际经验中,接触到如下几种方法,以下进行举例说明,每种方法都有其特定使用环境,优缺点,供大家参考: 1,单元测试代码,直接写在需要被测试的类中。 solution结构如下: 代码如下: Imports NUnit.Framework![]() <TestFixture()> _![]() Public Class Class1Class Class1![]() ''' ----------------------------------------------------------------------------- ''' <summary> ''' 查找最大值 ''' </summary> ''' <param name="list">传入整数数组</param> ''' <returns>返回数组中的最大值</returns> ''' <remarks> ''' </remarks> ''' <history> ''' [TonyGong] 5/25/2006 Created ''' </history> ''' -----------------------------------------------------------------------------![]() Function FindMax()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()Sub FindMaxTest() ' Dim list1() As Int32 = {1, 3, 10, 4} Dim list2() As Int32 = {1, 3, 4, 10} Dim list3() As Int32 = {10, 3, 1, 4} 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![]() ![]()
![]() Public Class Class1Class Class1 ''' ----------------------------------------------------------------------------- ''' <summary> ''' 查找最大值 ''' </summary> ''' <param name="list">传入整数数组</param> ''' <returns>返回数组中的最大值</returns> ''' <remarks> ''' </remarks> ''' <history> ''' [TonyGong] 5/25/2006 Created ''' </history> ''' -----------------------------------------------------------------------------![]() Function FindMax()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 Class1TestClass Class1Test![]() Public Sub New()Sub New()![]() End Sub![]() ''' ----------------------------------------------------------------------------- ''' <summary> ''' 测试Class1类的FindMax方法 ''' </summary> ''' <remarks> ''' </remarks> ''' <history> ''' [TonyGong] 5/25/2006 Created ''' </history> ''' ----------------------------------------------------------------------------- <Test()> _![]() Public Sub FindMaxTest()Sub FindMaxTest() ' Dim list1() As Int32 = {1, 3, 10, 4} Dim list2() As Int32 = {1, 3, 4, 10} Dim list3() As Int32 = {10, 3, 1, 4} 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种方法便捷。 Imports NUnit.Framework![]() <TestFixture()> _![]() Public Class Class1TestClass Class1Test![]() Public Sub New()Sub New()![]() End Sub![]() ''' ----------------------------------------------------------------------------- ''' <summary> ''' 测试Class1类的FindMax方法 ''' </summary> ''' <remarks> ''' </remarks> ''' <history> ''' [TonyGong] 5/25/2006 Created ''' </history> ''' ----------------------------------------------------------------------------- <Test()> _![]() Public Sub FindMaxTest()Sub FindMaxTest() ' Dim list1() As Int32 = {1, 3, 10, 4} Dim list2() As Int32 = {1, 3, 4, 10} Dim list3() As Int32 = {10, 3, 1, 4} 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,3,在很小的模块中有时会用1,不过比起用1来,可能使用TestDriven.NET更加方便些,这个我打算后面单独写篇文章。 以上是我平时的一些经验,可能有很大不足,希望指正。 程序员问答社区,解决您的IT难题
|
![]() |
|
| Copyright © Tony.Gong | Powered by: 博客园 模板提供:沪江博客 |