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 ...
随机推荐
- 算法 - 乞讨n中位数(C++)
//************************************************************************************************** ...
- SVM算法实现(一)
关键字(keywords):SVM 支持向量机 SMO算法 实现 机器学习 假设对SVM原理不是非常懂的,能够先看一下入门的视频,对帮助理解非常实用的,然后再深入一点能够看看这几篇入门文章,作者写得挺 ...
- JVM Input Arguments Lookup (JMX)(转)
JVM Input Arguments Lookup (JMX) Maps JVM input arguments -- but not main arguments -- using JMX to ...
- 更改IOS于UISearchBar撤消button底、搜索输入文本框背景中的内容和UISearchBar底
转载请标明出处:http://blog.csdn.net/android_ls/article/details/39993433 測试的手机IOS系统版本为:6.1.3,实现过程例如以下: 1.加入U ...
- 快讯:埃博拉患者Martin Salia去天堂了
下面是Martin Salia外科医生的遗像: 11月17日,埃博拉重病患者Martin Salia外科医生死了.请见:Ebola patient Dr. Martin Salia dies in O ...
- iOS在地图上WGS84、GCJ-02、BD-09互转解决方案
该项目的最新进展包括地图共享模块,android同事集团开始,使用百度地图sdk,我开始回,运用iOS SDK的mapkit做,之后,问题是,用纬度和经度坐标iOS端和Android端出现了比較大偏差 ...
- Cocos2d Lua 越来越小样本 内存游戏
1.游戏简介 一个"记忆"类的比赛游戏.你和电脑对战,轮到谁的回合,谁翻两张牌,假设两张牌一样.就消掉这两张牌,得2分,能够继续翻牌,假设两张牌不一样,就换一个人.直到最后.看谁的 ...
- Android 应用程序窗口显示状态操作(requestWindowFeature()的应用)
我们在开发程序是常常会须要软件全屏显示.自己定义标题(使用button等控件)和其它的需求,今天这一讲就是怎样控制Android应用程序的窗口显示. 首先介绍一个重要方法那就是requestWi ...
- git常用命令学习(转)
一.Bug分支 1,假设如下场景,你正在dev分支工作,突然接到一个修复代号为101的bug的任务时,dev的东西还没不能提交,但是bug需要马上修复. Git提供了一个stash功能,可以把当前工作 ...
- 从源代码分析modelDriven拦截器和params拦截器和拦截器prepare 和paramsPrepareParamsStack拦截器栈(让你的Struts2代码更简洁——如何培养框架设计能力
源代码文件:Web App Libraries/struts2-core-2.3.15.3.jar/struts-default.xml 拦截器modelDriven: <interceptor ...