TestDriven.NET – 快速入门
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)的图标将会的提示框中出现.
添加引用
如C:\Program Files\TestDriven.NET 3\NUnit\2.5\framework\nunit.framework.dll

using NUnit.Framework;
如果代码编辑选项被选择了,将要执行的测试将会被在光标的位置被终止。当你右键点击在任何一个方法的内部,出现‘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
使用 Debugger测试
'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 原文地址
TestDriven.NET – 快速入门的更多相关文章
- 【转】Robot Framework 快速入门
目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键词 用户定义关键词 变量 定义变量 使用变 ...
- Robot Framework 快速入门
Robot Framework 快速入门 目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键 ...
- Robot Framework 快速入门_中文版
目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键词 用户定义关键词 变量 定义变量 使用变 ...
- Web Api 入门实战 (快速入门+工具使用+不依赖IIS)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...
- SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)
SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...
- 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)
今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...
- 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- Mybatis框架 的快速入门
MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...
随机推荐
- BZOJ2252: [2010Beijing wc]矩阵距离
题解: 我脑子里都是翔??? bfs一下就行了 我居然还想什么kd tree!真是too naive,,, #include<cstdio> #include<cstdlib> ...
- JAVA安卓和C# 3DES加密解密的兼容性问题(2013年8月修改版)
近 一个项目.net 要调用JAVA的WEB SERVICE,数据采用3DES加密,涉及到两种语言3DES一致性的问题, 下面分享一下, 这里的KEY采用Base64编码,便用分发,因为Java的By ...
- POJ 1904 King's Quest ★(强连通分量:可行完美匹配边)
题意 有n个女生和n个男生,给定一些关系表示男生喜欢女生(即两个人可以结婚),再给定一个初始匹配,表示这个男生和哪个女生结婚,初始匹配必定是合法的.求每个男生可以和哪几个女生可以结婚且能与所有人不发生 ...
- POJ 2446 Chessboard (二分图匹配)
题意 在一个N*M的矩形里,用1*2的骨牌去覆盖该矩形,每个骨牌只能覆盖相邻的两个格子,问是否能把每个格子都盖住.PS:有K个孔不用覆盖. 思路 容易发现,棋盘上坐标和为奇数的点只会和坐标和为偶数的点 ...
- win32 摄像头捕获系统vfw
//win32 摄像头捕获系统vfw // VideoRecord.h /// 用于定义一些资源ID #include "resource.h" //#define EXIT ...
- Android SDK Manager 更新代理配置 ,蛋碎了
启动 Android SDK Manager ,打开主界面,依次选择「Tools」.「Options...」,弹出『Android SDK Manager - Settings』窗口: 在『Andro ...
- 写的cursor demo仅作记录
declare @objectID int; declare objcur cursor for object_id from m_object open objcur fetch next from ...
- Maximum Product Subarray JAVA实现
题目描述: Find the contiguous subarray within an array (containing at least one number) which has the la ...
- Android 模拟器中sdcard操作
1. 在模拟器中创建sdcard目录,方法如下: 1. mksdcard命令 用cmd进入SDK的Tools目录,执行mksdcard命令.会出现如下帮助信息 我们可以看到sdcard image支 ...
- 《Python核心编程》 第三章 Python基础 - 练习
创建文件: # -*- coding: gbk -*- #! /auto/ERP/python_core/chapter ''' Created on 2014年5月21日 @author: user ...