如何用TDD开发复杂的方法
几个星期前,我用TDD开始了我的第一个项目.到目前为止,我只读过一本关于它的书.
我主要担心:如何编写复杂方法/类的测试.我写了一个计算二项分布的类.因此,该类的方法将n,k和p作为输入,并计算resp.可能性. (实际上它做得多一些,这就是为什么我必须自己编写它,但为了方便论证,让我们坚持这个类的描述.) 我测试这个方法的方法是:将我在网络中找到的不同n的一些表复制到我的代码中,随机选择此表中的一个条目,然后输入. n,k和p的值进入我的函数,并查看结果是否接近表中的值.我为每张桌子多次重复这一点. 这一切都运行良好,但在编写测试后,我不得不坦克几个小时来真正编写功能.从阅读本书开始,我的印象是我不应该编写超过几分钟的代码,直到测试显示为绿色.我在这做错了什么?当然,我已经用很多方法打破了这个任务,但它们都是私有的. 一个相关的问题:从表中随机抽取数字是不是一个坏主意?如果出现错误,我将显示此运行使用的随机种子,以便我可以重现该错误.
“我的印象是我的代码不应该超过几分钟,直到测试显示为绿色.我在这里做错了什么?”
韦斯特法尔在某一点上是正确的. 一些功能开始很简单,可以简单地测试和编码. 一些功能并不简单.简单很难实现. EWD说,简单性并不重要,因为它很难实现. 如果你的函数体很难写,那就不简单了.这意味着你必须更加努力地将其简化为简单的事情. 在你最终实现简单性之后,你也可以写一本书,说明它是多么简单. 在你实现简单性之前,写东西需要很长时间. “从桌子上随机抽取数字是不是一个坏主意?” 是.如果您有样本数据,请针对所有样本数据运行测试.使用循环或其他东西,并测试您可能测试的所有内容. 不要选择一行 – 随机或其他方式,选择所有行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |