TDD(测试驱动开发)学习二:创建第一个TDD程序
本节我们将学习一些测试驱动开发环境的搭建,测试驱动开发概念和流程。所涉及的内容全部会以截图的形式贴出来,如果你也感兴趣,可以一步一步的跟着来做,如果你有任何问题,可以进行留言,我也会很高兴的为你答疑。
准备工具
Visual Studio(什么版本都无所谓),NUnit
安装NUnit
从NUnit官网下载最新版本的NUnit,地址为http://www.nunit.org/index.php?p=download,下载这个msi,然后进行安装,直接下一步搞定。
在项目引用NUnit
首先,在VS中新建项目==》添加项目==》在模板里选择其他项目类型==》VS解决方案==》空白解决方案,然后命名为MyFirstTdd,如下图。

然后,在新建的解决方案上面,新建项目,添加一个类库Tdd.TicTacToe.Model。
添加完成后,继续添加Tdd.TicTacToe.ModelTests类库。
在解决方案上面点击右键,会出现“在文件资源管理器中打开文件夹”,打开文件夹后,在文件夹里新建一个文件夹,命名为lib。然后从从开始安装NUnit的文件夹中,把nunit.framework.dll(找到你刚刚安装NUnit的目录,我的是在C:\Program Files (x86)\NUnit 2.6.4\bin\framework文件夹里),复制到刚才新建的lib文件夹里。
继续在VS右键==》添加==》新建解决方案文件夹,命名为lib,在lib解决方案文件夹里添加现有项,把刚刚lib文件夹里的nunit.framework.dll给添加上。
在Tdd.TicTacToe.ModelTests的引用上面右键,添加刚刚的unit.framework.dll和对Tdd.TicTacToe.Model的引用。
OK,到这一步,那整个NUnit的引用已经全部完成了,如果你的解决方案是和我下面的一样,那么恭喜你,可以进入下一步了,如果不一样,请检查你的步骤,有什么问题可以留言。

TDD的基础知识
现在我们在使用TDD之前,我们对TDD的一些基础知识和流程进行了解。
3A模板
3A模板类似管理学中的PDCA的管理思想一样,做事之前,先进行准备好测试的环境(Arrange),对所准备好的测试的方法进行执行(Act),对测试结果和原计划的结果进行比较,看是否一致(Assert).

Assert静态方法
我记得当初看C#书籍的时候,看到过Assert这个单词,可是从来都没有用户,那现在你终于有机会用到这个单词了,而且它还有很多静态方法,大家先了解一下。

测试驱动开发流程
《论语·学而》里有这么一句话,“吾日三省吾身,为人谋而不忠乎?与朋友交而不信乎?传不习乎?”,大白话就是“我每天多次反省自己的言行,替人家谋划的事不尽心尽力吗?和朋友交往不诚心诚意吗?传授给别人的道理有没有那样去做呢?”,对TDD也是这样,每次测试的时候,你都要考虑,如何让你的程序错的给改正确,正确的考虑还能不能更好。

写第一个TDD测试程序
在Tdd.TicTacToe.ModelTests里添加一个类,命名为SimpleTest,然后添加下面的代码定义。


保存后,在Tdd.TicTacToe.ModelTests右键重新编译,然后再开始菜单里打开刚刚安装的NUnit,文件==》打开项目,找到编译好的Tdd.TicTacToe.ModelTests.dll,我的是在MyFirstTdd\Tdd.TicTacToe.ModelTests\bin\Debug文件夹下。加载后,进行Run一下,然后你就会看到红红的叉叉,测试没通过,你知道原因了没。

看看提示
Tdd.TicTacToe.ModelTests.SimpleTest.My_First_NUnit_Test:
Expected: 3
But was: 4
预期为结果为3,实际得到的结果为4,所以这个时候我们回去修改一下我们的程序,把3+1改成2+1,或者改成1+2,3+0,重新生成,重新Run一下,恭喜你,变为全绿了,成功了。

今天就写这些,这个系列我还会继续写下去,接下来,我会用TDD来完整的开发一个完整的小游戏,以便大家能更深刻的理解TDD的开发模式,敬请期待,如果你觉得我这篇文章写得好,请点击推荐按钮推荐一下吧。
TDD(测试驱动开发)学习二:创建第一个TDD程序的更多相关文章
- TDD(测试驱动开发)学习一:初识TDD
首先说一下名词解释,TDD,英文名称Test-Driven Development,中文名称测试驱动开发,简单的断下句“测试/驱动/开发”,简单的理解一下,就是测试驱动着开发,大白话就是说用一边测试一 ...
- 测试驱动开发学习笔记(UTDD)
title: 测试驱动开发学习笔记(UTDD) date: 2020-08-01 23:59:17 tags: [2020, 学习一门技能, TDD, DevOps] What TDD(Test-Dr ...
- TDD(测试驱动开发)培训录
2014年我一直从事在敏捷实践咨询项目,这也是我颇有收获的一年,特别是咨询项目的每一点改变,不管是代码质量的提高,还是自组织团队的建设,都能让我们感到欣慰.涉及人的问题都是复杂问题,改变人,改变一个组 ...
- TDD(测试驱动开发)培训录(转)
本文转载自:http://www.cnblogs.com/whitewolf/p/4205761.html 最近也在了解TDD,发现这篇文章不错,特此转载一下. TDD(测试驱动开发)培训录 2015 ...
- TDD(测试驱动开发)
TDD(测试驱动开发)培训录 2014年我一直从事在敏捷实践咨询项目,这也是我颇有收获的一年,特别是咨询项目的每一点改变,不管是代码质量的提高,还是自组织团队的建设,都能让我们感到欣慰.涉及人的问题都 ...
- Windows Azure入门教学系列 (一): 创建第一个WebRole程序
原文 Windows Azure入门教学系列 (一): 创建第一个WebRole程序 在第一篇教学中,我们将学习如何在Visual Studio 2008 SP1中创建一个WebRole程序(C#语言 ...
- “全栈2019”Java第四章:创建第一个Java程序
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- CodeBlocks环境搭建及创建第一个C++程序
某业界大牛推荐最佳的途径是从raytracing入门,所以本屌开始学习<Ray Tracing In One Weekend>. 该书是基于C++的.本屌从未学过C++.感觉告诉我,要先搭 ...
- Spark学习笔记1——第一个Spark程序:单词数统计
Spark学习笔记1--第一个Spark程序:单词数统计 笔记摘抄自 [美] Holden Karau 等著的<Spark快速大数据分析> 添加依赖 通过 Maven 添加 Spark-c ...
随机推荐
- grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)(转)
这篇长文历时近两天终于完成了,前两天帮网站翻译一篇文章“为什么GNU grep如此之快?”,里面提及到grep速度快的一个重要原因是使用了Boyer-Moore算法作为字符串搜索算法,兴趣之下就想了解 ...
- Struts2 + uploadify 多文件上传完整的例子!
首先,我这里使用的是 Jquery Uploadify3.2版本号 导入相关的CSS JS <link rel="stylesheet" type=" ...
- MEF初体验之三:Exports声明
组合部件通过[ExportAttribute]声明exports.在MEF中,有这么几种成员可声明exports的方式:组合部件(类).字段.属性和方法.我们来看下ExportAttribute类的声 ...
- [Oracle] 分析功能(1)- 语法
语法概览 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGJhbm90ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQ ...
- sun.misc.BASE64Encoder我找不到jar一揽子解决方案
1.合适的项目 --> 属性(Properties) --> java bulid path --> Libraries -> jre System Library(点加号在前 ...
- Android.9图片评论(一个)
什么是.9图片 至于什么是.9图片这里就简单提一下,即图片后缀名前有.9的图片,如pic.9.png.pic1.9.jgp,诸如此类的图片就称为.9图片. .9图片的作用 ①.9图片的作用是在图片拉伸 ...
- 文件类似的推理 -- 超级本征值(super feature)
基于内容的变长分块(CDC)技术,能够用来对文件进行变长分块.而后用来进行反复性检測,广泛用于去重系统中.后来又出现了对相似数据块进行delta压缩,进一步节省存储开销. 所以就须要一种高效 ...
- ZOJ-3652-Maze(BFS)
Celica is a brave person and believer of a God in the bright side. He always fights against the mons ...
- 解决opengl计算顶点的法线问题
因为需要的论文,最近开始学习OpenGL.由于刚入门的初学者有这么总会遇到很多问题,. 这些天,好不容易才OpenGL个问题弄明确了. 几点迷惑: 在网上百度.发现非常多求平面法向量的介绍以及程序.后 ...
- 采用 HTML5 File API 达到client log
http://www.ibm.com/developerworks/cn/web/1210_jiangjj_html5log/ 版权声明:本文博主原创文章,博客,未经同意不得转载.