本节我们将学习一些测试驱动开发环境的搭建,测试驱动开发概念和流程。所涉及的内容全部会以截图的形式贴出来,如果你也感兴趣,可以一步一步的跟着来做,如果你有任何问题,可以进行留言,我也会很高兴的为你答疑。

准备工具

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程序的更多相关文章

  1. TDD(测试驱动开发)学习一:初识TDD

    首先说一下名词解释,TDD,英文名称Test-Driven Development,中文名称测试驱动开发,简单的断下句“测试/驱动/开发”,简单的理解一下,就是测试驱动着开发,大白话就是说用一边测试一 ...

  2. 测试驱动开发学习笔记(UTDD)

    title: 测试驱动开发学习笔记(UTDD) date: 2020-08-01 23:59:17 tags: [2020, 学习一门技能, TDD, DevOps] What TDD(Test-Dr ...

  3. TDD(测试驱动开发)培训录

    2014年我一直从事在敏捷实践咨询项目,这也是我颇有收获的一年,特别是咨询项目的每一点改变,不管是代码质量的提高,还是自组织团队的建设,都能让我们感到欣慰.涉及人的问题都是复杂问题,改变人,改变一个组 ...

  4. TDD(测试驱动开发)培训录(转)

    本文转载自:http://www.cnblogs.com/whitewolf/p/4205761.html 最近也在了解TDD,发现这篇文章不错,特此转载一下. TDD(测试驱动开发)培训录 2015 ...

  5. TDD(测试驱动开发)

    TDD(测试驱动开发)培训录 2014年我一直从事在敏捷实践咨询项目,这也是我颇有收获的一年,特别是咨询项目的每一点改变,不管是代码质量的提高,还是自组织团队的建设,都能让我们感到欣慰.涉及人的问题都 ...

  6. Windows Azure入门教学系列 (一): 创建第一个WebRole程序

    原文 Windows Azure入门教学系列 (一): 创建第一个WebRole程序 在第一篇教学中,我们将学习如何在Visual Studio 2008 SP1中创建一个WebRole程序(C#语言 ...

  7. “全栈2019”Java第四章:创建第一个Java程序

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  8. CodeBlocks环境搭建及创建第一个C++程序

    某业界大牛推荐最佳的途径是从raytracing入门,所以本屌开始学习<Ray Tracing In One Weekend>. 该书是基于C++的.本屌从未学过C++.感觉告诉我,要先搭 ...

  9. Spark学习笔记1——第一个Spark程序:单词数统计

    Spark学习笔记1--第一个Spark程序:单词数统计 笔记摘抄自 [美] Holden Karau 等著的<Spark快速大数据分析> 添加依赖 通过 Maven 添加 Spark-c ...

随机推荐

  1. 电脑知识--Windows一片

    .com档 Dos可执行命令文件,一般小于64kb, .com文件包括程序的一个绝对映像.就是说,为了执行程序准确的处理器指令和内存中的数据.Ms-Dos通过直接把该映像从文件复制到内存. 而 载入. ...

  2. IOS应用上传须要做的工作

    苹果开发人员   https://developer.apple.com/ 证书创建流程 certificates (证书): 是电脑可以增加开发人员计划的凭证 证书分为:开发证书和公布(产品)证书, ...

  3. [Android] App在三星某些机子上闪退:"不保留活动"

    今天遇到用户反映应用总是闪退. 现象:在MainActivity后,只要进入任何主进程相关的二级界面,都会导致应用闪退(注:不是崩溃引起的,只是闪退) 分析:1.看log日志,退出前有抛出异常,但查看 ...

  4. SQL Server错误代码及解释(留着备用)

    原文:SQL Server错误代码及解释(留着备用) 转自:http://www.ajia.me/Article/193.html Code Error Message 0 操作成功完成.  1 功能 ...

  5. POJ 3579- Median

     Description Given N numbers, X1, X2, ... , XN, let us calculate the difference of every pair of n ...

  6. HDU 1272 小希迷宫(并检查集合)

    意甲冠军:被判处无向图无环和连接无处不在 思考:并检查集合,trap 您可能有一个直接输入0 0 并且....合并的时候按某一个方向会爆栈,爆了好几次...下次考虑一下直接递归找祖先吧 #includ ...

  7. Hadoop 2.6.0分布式部署參考手冊

    Hadoop 2.6.0分布式部署參考手冊 关于本參考手冊的word文档.能够到例如以下地址下载:http://download.csdn.net/detail/u012875880/8291493 ...

  8. 据序和中序序列或者也许为了一个二进制序列,恢复二进制和打印图像(c语言)

    首先要预购和序,以恢复它: 1.首先,我们使用的是递归的方式来完成 2.递归的最小单位:一个空的树和书的前言和第一序.该序列的第一个元素是树的第一序列根,调用这种方法 3.递归的终止条件是.当这棵树的 ...

  9. 十依据一个有用的算法来找到最小(最大)的k的数量-线性搜索算法

    例如:进入1.2.3,4,5,6.7.8此8数字,最小的4图的1,2,3,4. 思路1:最easy想到的方法:先对这个序列从小到大排序.然后输出前面的最小的k个数就可以.假设选择高速排序法来进行排序, ...

  10. Javascript继承之最佳实践

    尊重原创,转载请注明出处:http://blog.csdn.net/zoutongyuan 什么是继承? 继承是面向对象最显著的一个特性.继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和 ...