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

准备工具

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. all about AIX MPIO

    Multipath  I/O (多路径)   在计算机存储技术里,多路径提供了容错和性能提高,在计算机系统里CPU有多条物理路径通道,块存储设备通过总线,控制器,交换设备以及桥接设备来连接.     ...

  2. SharePoint使用BCS开发你第一个应用程序(三)

    SharePoint使用BCS开发你第一个应用程序(三) 创建外部内容类型.         创建外部内容类型有三种不同方式: 1. 在记事本上手写XML代码(不推荐). 2. 使用SharePoin ...

  3. Ant—Ant标签解释

            采用ant命令必须写ant命令脚本,脚本由非常多Ant标签组成.现在总结一下我也遇到过Ant标签: 版权声明:本文博主原创文章,博客,未经同意不得转载.

  4. MVC5 Entity Framework学习之实现继承

    之前你已经学习了怎样处理并发异常,在本节中你将学习怎样实现继承. 在面向对象的编程中,你能够使用继承来重用代码.接下来你将改动Instructor和Student类,让它们派生自Person基类,该基 ...

  5. 渲染优化 之fixed与返回顶部 以及开启GPU Hack

    fixed元素,常见网站右侧出现一个返回顶部的按钮,滚动的时候,会发现返回顶部这个区域在不停的进行重绘,而返回顶部是position:fixed定位的.这也解释了为什么fixed定位是最耗性能的属性之 ...

  6. android代码签名和混乱的包装

    研究了一下android的apk困惑签名和代码包装,假设没有混乱包.然后apk人们可以直接查看源代码反编译出来,尽管混乱包或能看懂.但不是那么容易理解,要求在至少一些时间 假设不混淆,反编译后的代码例 ...

  7. WebKit介绍及总结(一)

    一 . WebKit 简单介绍 Webkit 是一个开放源码的浏览器引擎 (web browser engine) ,最初的代码来自 KDE 的 KHTML 和 KJS( 均开放源码 ) .苹果公司在 ...

  8. C++的感想

    C++的感想 大学期间,学了一学期的C语言,当然包括学习数据结构时,用的也是C语言.当时刚刚接触计算机,对于编程更是一无所知.上课学习学习,偶尔会照着书上敲一下代码.大二下学期,就丢掉了不用了.最近由 ...

  9. Swift的74标准功能

    Swift中共同拥有74个内建函数,可是在Swift官方文档("The Swift Programming Language")中仅仅记录了7中.剩下的67个都没有记录. 本文将列 ...

  10. Java多线程的~~~synchronized加入参数,以实现独立片段

    有时候,我们不希望在整个方法的前面加上synchronized这个keyword.这将使整个方法调用变得缓慢,我们只是重点 代码的地方添加这个synchronized这个keyword,然后这样就能加 ...