关闭。这个问题是opinion-based .它目前不接受答案。
想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.
3年前关闭。
Improve this question
所以我已经完成了一些单元测试,并且有编写测试的经验,但我还没有完全接受 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);
阅读 Kent Becks 示例书,他谈到了选择小测试。这似乎是一个相当大的黑匣子。它需要一个制造订单存储库,我必须爬取一个产品结构树来找到这个制造订单的所有适用部件号,我什至没有在代码中定义我的域模型。
所以一方面,这似乎是一个糟糕的开始——一个非常普遍的高级功能。另一方面,我觉得如果我从较低的级别开始,我真的只是在猜测我可能需要什么,这似乎是反 TDD 的。
作为旁注……这是您使用故事的方式吗?
作为一个组装者
我想获得制造订单上的零件编号列表
这样我就可以选择要序列化的
说实话,装配工永远不会这么说。汇编程序只需要完成按制造顺序的操作:
作为汇编
我想用序列号标记零件
这样我就可以完成对mfg订单的操作
最佳答案
这是我将如何开始。假设您完全没有此应用程序的代码。
Assert.AreSame(3, controller.RetrieveParts(mfgOrder).Count)
return new List<MfgOrder>{new MfgOrder(), new MfgOrder(), new MfgOrder()};
例如,您还需要为 MfgOrder 实现类。 这里的要点是将应用程序分成非常小的部分,并单独测试这些小部分。
关于TDD:从哪里开始第一次测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/935349/