读书人

迷惑:单元测试该在什么时候写

发布时间: 2013-10-01 12:15:56 作者: rapoo

困惑:单元测试该在什么时候写?

原文:http://www.codinghorror.com/blog/2005/04/good-test-bad-test.html

作者: Jeff Atwood


很多年以来,用于随机测试(ad-hoc test)的工具我都是自己开发的。但在最近的一个项目中,我终于采用了NUnit和TestRunner来做正式的单元测试。下面是我编写的第一个单元测试,看起来很简单,而且轻轻松松就通过了:

<TestFixture()>_

PublicClass UnitTests

Private _TargetString As String

Private _TargetData As Encryption.Data

<TestFixtureSetUp()> _

Public Sub Setup()

_TargetString = "an enigma wrapped ina mystery slathered in secret sauce"

_TargetData = NewEncryption.Data(_TargetString)

End Sub

<Test(),Category("Symmetric")> _

Public Sub MyTest()

Dim s As New Encryption.Symmetric(Encryption.Symmetric.Providers.DES)

Dim encryptedData As Encryption.Data

Dim decryptedData As Encryption.Data

encryptedData = s.Encrypt(_TargetData)

decryptedData = s.Decrypt(encryptedData)

Assert.AreEqual(_TargetString, decryptedData.ToString)

End Sub

EndClass

这个测试系统真是太棒了,因为我一眼就能看出这块代码在测什么,以及它是如何工作的。这不禁让人感叹:简单就是美!于是,实现单元测试的框架已经不成问题。问题在于,要决定测什么,以及如何去测。或者再把问题理论化一点:怎样才算是好的测试?

单元测试的价值是毋庸置疑的!跟大多数开发人员所做的测试比起来,即使是最最基本的单元测试(就像上面给出的例子那样),也是巨大的进步。也就是说,大部分开发人员根本就不做测试!他们只是随意输入一些数据,然后点几个按钮。如果在这个过程中没有发现尚未处理的异常,他们就觉得代码已经够好了,可以交付给测试团队了……

单元测试的真正价值在于,它迫使你停下来,为测试思量一番。跟漫无计划的随机测试比起来,单元测试让你为你刚刚写下的代码思考一连串艰难但又不得不考虑的问题:

读书人网 >其他相关

热点推荐