TDD ......怎么样?

siv*_*udh 9 tdd

我即将开始我的第一个TDD(测试驱动开发)程序,我(自然)有一个TDD心理障碍.所以我想知道是否有人可以帮助指导我应该从哪里开始.

我正在创建一个函数,它将从套接字读取二进制数据并将其数据解析为类对象.

据我所知,有3个部分:

1)解析数据的逻辑2)套接字类3)类对象

我应该采取哪些步骤以便逐步增加TDD?我绝对计划在实现该功能之前先编写测试.

S.L*_*ott 6

TDD中的问题是"可测试性设计"

首先,您必须有一个用于编写测试的接口.

要实现这一目标,您必须大致了解可测试单元的内容.

  1. 一些类,由函数构建.

  2. 一些函数,从套接字读取并发出一个类.

其次,给定这个粗略的接口,您将其形式化为实际的非工作类和函数定义.

第三,你开始编写你的测试 - 知道他们将编译但失败.

在此过程中,你可能会开始对你的功能感到头疼.如何为您的功能设置套接字?这是一个痛苦的脖子.

但是,你在上面粗暴的界面不是法律,这只是一个好主意.如果你的函数使用了一个字节数组并创建了一个类对象怎么办?这更容易测试.

因此,重新审视步骤,更改界面,编写非工作类和函数,现在编写测试.

现在,您可以填写类和函数,直到所有测试都通过.

当你完成这一点测试时,你所要做的就是挂钩一个真正的套接字.你信任套接字库吗?(提示:你应该)在这里测试不多.如果您不信任套接字库,那么现在您必须提供可以受控方式运行的数据源.那是一个巨大的痛苦.


Jon*_*eet 5

你的分裂听起来很合理 我会认为这两个依赖项是输入和输出.你能否让他们减少对具体生产代码的依赖?例如,您可以从一般数据流而不是套接字读取它吗?这样可以更容易地传入测试数据.

返回值的创建可能更难以模拟,也可能不是问题 - 结果对象的实际填充使用的逻辑是否相当简单(在解析之后)?例如,它基本上只是设置琐碎的属性?如果是这样,我不打算尝试在那里引入工厂等 - 只需输入一些测试数据并检查结果.