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 – 快速入门的更多相关文章

  1. 【转】Robot Framework 快速入门

    目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键词 用户定义关键词 变量 定义变量 使用变 ...

  2. Robot Framework 快速入门

    Robot Framework 快速入门 目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键 ...

  3. Robot Framework 快速入门_中文版

    目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键词 用户定义关键词 变量 定义变量 使用变 ...

  4. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...

  5. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

  6. 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)

    今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...

  7. 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  8. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  9. Mybatis框架 的快速入门

    MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...

随机推荐

  1. UITableViewCell上的按钮点击事件处理

    转自:  http://www.aichengxu.com/view/42871 UITableViewCell上的按钮点击事件处理,有需要的朋友可以参考下. 今天突然做项目的时候,又遇到处理自定义的 ...

  2. Spring下载

    Spring官网改版后找了好久都没有找到直接下载Jar包的链接,下面汇总些网上提供的方法,亲测可用. 1.直接输入地址,改相应版本即可:http://repo.springsource.org/lib ...

  3. Java [Leetcode 111]Minimum Depth of Binary Tree

    题目描述: Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along th ...

  4. LeetCode: Interval

    (1)Merge Intervals https://leetcode.com/problems/merge-intervals/ Given a collection of intervals, m ...

  5. H.264中NAL、Slice与frame意思及相互关系

    H.264中NAL.Slice与frame意思及相互关系 NAL nal_unit_type中的1(非IDR图像的编码条带).2(编码条带数据分割块A).3(编码条带数据分割块B).4(编码条带数据分 ...

  6. 【WEB小工具】jQuery函数

    jQuery-API帮助文档:Click here jQuery简介 jQuery是JavaScript框架,jQuery也是JavaScript代码.使用jQuery要比直接使用JavaScript ...

  7. 1045 整数礼物 c语言

    描述 Na 给准备送给ZZ两个整数,a, b,他还计算了这两个整数的平均值c,碰巧c也是整数. 但是Na 突然把b给弄丢了,你要帮助Na通过a, c计算出来b的值. 输入 输入为一行,两个用空格隔开的 ...

  8. bjfu1284 判别正则表达式

    做解析器做得多的我,一上来就觉得要写解析器,麻烦,于是想偷懒用java的正则表达式类Pattern直接进行判断,结果wa了,原因是这题要求的正则表达式只是真正正则表达式的一个子集.比如|12是合法正则 ...

  9. IOS color 颜色值比较

    /生成采样对照颜色(黑色) UIColor* sampleColor = [UIColor colorWithRed:(0/255.0f) green:(0/255.0f)  blue:(0/255. ...

  10. sqlServer 取每组的前几条数据

    首先的建表语句: ) DROP TABLE [test] CREATE TABLE [test] ( [id] [, ) NOT NULL , [name] [nvarchar] () NULL , ...