TDD:在哪里开始第一次测试

栏目: 编程工具 · 发布时间: 6年前

内容简介:代码日志版权声明:翻译自:http://stackoverflow.com/questions/935349/tdd-where-to-start-the-first-test

所以我做了一些单元测试,并且有经验的写测试,但我还没有完全接受TDD作为设计工具.

我目前的项目是重新组建一个生成序列号的现有系统,作为公司组装过程的一部分.由于查看现有系统,我对当前的流程和工作流程有一个了解.我还有一个新的要求清单,以及如何修改工作流程.

我觉得我准备好开始编写程序了,我决定强迫自己从头到尾都是做TDD.

但现在我不知道从哪里开始. (我也想知道我是否欺骗TDD进程已经有了用户的程序流的想法.)

用户流是真正的串行,只是一系列的步骤.例如,第一步是:

>用户提交制造订单编号,并收到该订单材料清单的可序列化部件号

当用户选择其中一个部件号时,下一步将开始.

所以我以为可以把这个第一步作为起点.我知道我想要一块代码,它需要一个制造订单编号,并返回零件编号列表.

// This isn't what I'd want my code to end up looking like
// but it is the simplest statement of what I want
IList<string> partNumbers = GetPartNumbersForMfgOrder(string mfgOrder);

阅读肯特·贝克的例子,他谈到选择小测试.这似乎是一个很大的黑盒子.它需要一个制造订单存储库,我必须爬行一个产品结构树,找到这个mfg订单的所有适用的零件编号,我甚至根本没有在代码中定义我的域模型.

所以一方面看起来像一个糟糕的开始 – 一个非常一般的高级功能.另一方面,我觉得如果我从较低级别开始,我真的只是猜测我可能需要什么,这似乎是反TDD.

作为附注…这是怎么使用故事?

作为汇编人员

我想在制造订单上得到一个零件编号列表

所以我可以选择哪一个序列化

要真实的是,汇编人员永远不会这样说.所有汇编人员都希望在制造订单上完成操作:

作为汇编人员

我想用序列号标记零件

所以我可以在mfg订单上完成操作

这是我如何开始.假设你绝对没有这个应用程序的代码.

>定义用户故事及其带来的业务价值:“作为用户,我想提交制造订单编号和该订单的部件号列表,以便我可以将列表发送到库存系统”

>从UI开始创建一个非常简单的页面(让我们假设它的一个Web应用程序)有三个字段:标签,列表和按钮.那还够好,不是吗?用户可以复制列表并发送到inv系统.

>使用模式来设计你的设计,像MVC.

>为从UI中调用的控制器方法定义一个测试.你在这里测试控制器工作,而不是数据是正确的:Assert.AreSame(3,controller.RetrieveParts(mfgOrder).Count)

>编写控制器的简单实现,以确保返回一些东西:return new List<MfgOrder> {new MfgOrder(),new MfgOrder(),new MfgOrder()};例如,您还需要实现MfgOrder的类.

>现在你的UI正在工作!工作不正确,但工作.因此,我们期望控制器从服务或DAO获取数据.在测试用例中创建一个Mock DAO对象,并添加一个期望方法“partsDao.GetPartsInMfgOrder()”被调用.

>使用该方法创建DAO类.从控制器调用该方法.你的控制器现在完成了.

>创建单独的测试来测试DAO,最后确保从DB返回正确的数据.

>继续迭代,直到你完成所有的操作.过了一会儿,你会习惯的.

这里的主要目的是将应用程序分成很小的部分,并单独测试这些小部件.

代码日志版权声明:

翻译自:http://stackoverflow.com/questions/935349/tdd-where-to-start-the-first-test


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

编程匠艺

编程匠艺

Pete Goodliffe / 韩江、陈玉 / 电子工业出版社 / 2011-11 / 85.00元

如果你可以编写出合格的代码,但是想更进一步、创作出组织良好而且易于理解的代码,并希望成为一名真正的编程专家或提高现有的职业技能,那么Pete Goodliffe编写的这本本书都会为你给出答案。本书的内容涵盖编程的各个要素,如代码风格、变量命名、错误处理和安全性等。此外,本书还对一些更广泛的编程问题进行了探讨,如有效的团队合作、开发过程和文档编写,等等。本书各章的末尾均提供一些思考问题,这些问题回顾......一起来看看 《编程匠艺》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具