我即将开始我的第一个TDD(测试驱动开发)程序,我(自然)有一个TDD心理障碍.所以我想知道是否有人可以帮助指导我应该从哪里开始.
我正在创建一个函数,它将从套接字读取二进制数据并将其数据解析为类对象.
据我所知,有3个部分:
1)解析数据的逻辑2)套接字类3)类对象
我应该采取哪些步骤以便逐步增加TDD?我绝对计划在实现该功能之前先编写测试.
TDD中的问题是"可测试性设计"
首先,您必须有一个用于编写测试的接口.
要实现这一目标,您必须大致了解可测试单元的内容.
一些类,由函数构建.
一些函数,从套接字读取并发出一个类.
其次,给定这个粗略的接口,您将其形式化为实际的非工作类和函数定义.
第三,你开始编写你的测试 - 知道他们将编译但失败.
在此过程中,你可能会开始对你的功能感到头疼.如何为您的功能设置套接字?这是一个痛苦的脖子.
但是,你在上面粗暴的界面不是法律,这只是一个好主意.如果你的函数使用了一个字节数组并创建了一个类对象怎么办?这更容易测试.
因此,重新审视步骤,更改界面,编写非工作类和函数,现在编写测试.
现在,您可以填写类和函数,直到所有测试都通过.
当你完成这一点测试时,你所要做的就是挂钩一个真正的套接字.你信任套接字库吗?(提示:你应该)在这里测试不多.如果您不信任套接字库,那么现在您必须提供可以受控方式运行的数据源.那是一个巨大的痛苦.
你的分裂听起来很合理 我会认为这两个依赖项是输入和输出.你能否让他们减少对具体生产代码的依赖?例如,您可以从一般数据流而不是套接字读取它吗?这样可以更容易地传入测试数据.
返回值的创建可能更难以模拟,也可能不是问题 - 结果对象的实际填充使用的逻辑是否相当简单(在解析之后)?例如,它基本上只是设置琐碎的属性?如果是这样,我不打算尝试在那里引入工厂等 - 只需输入一些测试数据并检查结果.
| 归档时间: |
|
| 查看次数: |
2595 次 |
| 最近记录: |