TestDriven.NET – 快速入门[译文]
这部分将提供一个快速的入门向导,在vs.NET的任何一个版本上面使用TestDriven。NET
TDD(测试驱动开发)在你写你的代码之前,写单元测试是种是一种习惯。在写代码之前写单元测试,之后使得测试通过可以使得你的更加的理解你的意图和目标。TDD(测试驱动开发)同样鼓励代码的覆盖,不单单可以提高代码的质量,同样允许你重构一些内部的类或者方法,并且快速简单的测试外部对象的接口。
TestDriven.NET是VS插件式的单元测试. 他用原来的名字NUnitAddIn发展了很多年. 它支持多种单元测试框架包括了NUnit, MbUnit 和 MSTS并且和VS.NET的所有版本兼容. 个人版本和商业版都能发挥它的效果。
TestDriven.NET 可以使用admin或者是受限制的用户进行安装. 默认的情况下会对当前的用户进行安装. 由于受限的用户没有对Program Files 文件夹的访问,那么安装就会在当前用户的'Application Data\TestDriven.NET' 文件夹下进行.管理员用户将会把文件安装到 'Program Files\TestDriven.NET' 文件夹下. 默认的文件夹可以在 选择'Custom' 在这个页面 'Choose Setup Type' 下改变
TestDriven.NET 按着不同的功能打包成了 NUnit 和 MbUnit 两个单元测试的Framework. 它同样包含了一个在VSTS中执行的单元测试的适配器。他们将会在 'TestDriven.NET' 子文件夹下面。 (如图一所示)
图一:. TestDriven.NET Setup
安装完了TestDriven.NET之后,重启VS, 'Run Test(s)' 命令 (在测试代码的范围之内,点击鼠标) 提供了一个快速的编译测试用例的渠道。它将会默认的执行测试方法.它将会自动的检测到被使用的测试框架并且执行当前的测试用例。测试将会被测试引擎以一个外部进程的方式执行。这个进程将会保持进行着,可以提高后来执行测试的次数。一旦一个测试的进程被捕捉到,一个火箭(Rocket)的图标将会的提示框中出现.
如果代码编辑选项被选择了,将要执行的测试将会被在光标的位置被终止。当你右键点击在任何一个方法的内部,出现‘RunTest(s)每个单独的测试将会被执行(如图2)。右键点击’Run Test(s)’的时候,所有的测试在一个命名空间中都会被执行。'Run Test(s)'按钮也同样在'Solution Explorer'中被找到.它可以被用来执行在一个解决方案,项目,或者项目item中的测试。
图示 2. Run Test(s) menu item
随机测试提供了一个很有用的抛弃命令行程序的替代物。他们无论如何不能替代了真正的单元测试。当然,他们将要打算提供一个方便的本地私有方法在第三个版本中。
任何一个方法都能够通过简单的右键点击’Run Test’作为一个随机测试被执行。他可以是公有的,私有的,静态的instance的方法。Any method can be executed as an ad-hoc test simply by right-clicking inside it and selecting 'Run test(s)'. It can be a 'public', 'private', 'static' or 'instance' method. Instance方法来说,当你使用默认的类的构造器的时候,一个对象将会被建立。当一个测试被执行的时候,Dispose方法也会被实现了IDisposable接口的时候呗调用。
如果一个随即的测试返回一个蚕食,这个参数将会呗扩展到’Test’的输出面板。复杂的对象讲有他们的域和属性被显示出来。可数的对象将会列出来。原始的对象将会转换成字符串并将被显示出来。当使用’Debug.WriteLine’的时候,同样的结果也会被包含进来。
测试输出 & 测试列表
这个 'Test' 输出面板将是一个窗口,在这里会看见所有的测试结果和警告信息(如图三)。与命令行输出和错误信息一起,跟踪和调试信息同样将会被发送,如果所有的测试在一个项目或者解决方案中呗执行,测试输出框将只显示忽略的或者没有通过的测试。
当一个测试失败,测试的名字一起会被异常的信息和跟踪队列被显示出来。如果代码被带着一些调试信息所编译,相同的堆栈跟踪信息将会计算出行数。双击这些部分会是一个驾驭泽这个杂乱代码的很好方法。
图示 3. Output Test Pane
像输出的面板中发送信息一样,错误的测试童谣会加入到任务列表中。如果很多测试失败了,那么这将会建立一个很有用的总结视图(如图4)大体上来讲,进一步的跟踪堆栈,从兴趣上来讲将会是很有趣的。双击测试区域的任务列表是另一种进入代码的方式。
图示4. Task list view
'Test With'菜单中提供了很多替代内容的可以在测试中执行。选择Debugger'内容可以在vs调试中执行测试. 通过在方法上加入断电并且选择'Test With Debugger' 可以进入一个单元测试。
图示5 Test With Debugger
默认情况的话VS将要建立所有的项目在一个solution中,当他们用debugger执行的时候。在VS2003和2005中有个选项"Only build startup projects and dependencies on Run". 选中之后可以减少的提高编译大的解决方案的时间。在vs2003中,选项是这个'Environment / Projects and Solutions'. Vs05可以在这个'Projects and Solutions / Build and Run'.下面找到。
通过右键点击'Solution Explorer'窗口,选择'Run Test(s)',在project里面的所有测试都会被执行。失败或者是忽略了的测试将会被发送'Test'输出窗口和任务列表中,在一个样式相似的 'Run Test(s)' 命令.如果执行所有的测试在一个项目或者解决方案中, 跟踪,调试和命令行输出是被禁止的,
同样的,所有的测试在一个解决方案中将会在右键点击在’Solution Explorer’窗口中的解决方案并且选择'Run Test(s)'. 对于每一个在解决方案中的项目测试的框架将会被用来建立和测试被执行的时候使用正确的测试。项目不包含任何测试的将会被忽略掉
终止一个运行中的测试
当一个测试正在执行时,菜单中的'Abort Test' 选项将会出现在'Tools' 的菜单中(如图6). 选择一个选项之后将会终止一个正在执行的线程。当测试以这种方式终止的时候,任何一个清除的逻辑将会给一个执行的机会。
图示 6. Abort Test
有些情况是有必要停止一些测试的进程的。他们当中最公共的就是当一个app的域被建立了之后,但是没有被加载到一个测试当中去。它能够导致任何一个加载到app域中的程序集中被锁定,任何一个随后的编译都会失败。右键点击火箭图标在通知框中并选择’stop’可以循环使用测试的进程(如图7)。一个新的测试进程将会被下次使用’Run Test(s)’命令的时候被执行。
图示 7. Stopping the Test Process
http://www.testdriven.net/quickstart.aspx 原文地址