掌握TDD

两个星期前,我参加了Paul Stringer的课程“在iOS中掌握TDD / BDD” 。 两天后,我筋疲力尽...在学习过程中,我们研究了所有理论并完成了一些练习。 保罗给了我们很多链接和书籍供阅读,坦率地说,我感到不知所措。 我看到自己坐在电脑前,所有的链接都可以跟随和阅读,但我不知道该怎么做……于是我躺在椅子上,闭上眼睛思考着……我对TDD有什么了解?

遵守规则...

好吧,我知道它有法律:

  • 在编写任何生产代码之前,必须编写失败的测试。
  • 您所编写的测试不得超过失败或编译失败的数量。
  • 您编写的生产代码不得超过足以使当前失败的测试通过的代码。

我知道我应该遵循以下圈子:红色–绿色–重构:

  • 红色–创建失败的测试
  • 绿色–编写足够的代码以使测试通过
  • 重构–清理代码和测试(不要忘记测试也是代码)

这很好地执行了TDD的三个法律。 正如肯特·贝克所说:

让它起作用。 改正它。 快一点。

如果你想知道所有关于TDD的周期, 这里是一个很好的文章Bob大叔

去你最喜欢的学校...

还有学校……不是物理学校:

  • 底特律/芝加哥学派或古典主义方法
  • 而伦敦学校还是模仿主义者的方法。

第一个使用真实的对象/类,并测试这些对象的状态。 第二个测试对象之间的协作,并为此使用模拟。 您拥有Sandro Mancuso 撰写的这篇文章以及Jonathan Rasmusson 撰写 一篇文章 ,可以帮助您更好地区分它们。

认识你的朋友...

作为iOS开发人员,由于我是从UI驱动测试的,所以我往往更喜欢模拟。 由于我们没有Mocking框架,因此在Swift中开发应用程序具有一些挑战性的方面……我们都是“手工”完成的……所以,很清楚知道您需要哪种测试倍数是一件好事。 人们倾向于称它们为嘲笑,但正如马丁·福勒Martin Fowler) 在这里所说:

不是存根

但是,如果您仍然对测试倍数仍有疑问,那么Bob叔叔的这篇出色文章肯定会对此有所启发……(我什至在这里找到了Swift的一个版本)。 神奇!

确定优先事项

是的,这是非常重要的一个:使用转换优先级前提避免繁琐的步骤,并指导您进行代码的一般化。 正如鲍勃叔叔所说:

[…]重构具有称为“转换”的对应项。 重构是简单的操作,可以更改代码的结构而不更改其行为。 转换是更改代码行为的简单操作。

另外一个很好的文章是这样一个佩德罗·桑托斯 。 不要忘记,在重构阶段,您的设计技能会受到考验:正如Sandro Mancuso 在这里所说:

TDD不是设计工具。 这是一个软件开发工作流程,可在其生命周期中提示代码改进。 […] TDD的妙处在于它不断问我们:“嘿,您能使您的代码更好吗? 看看这门课变得越来越困难吗? 好的,您成功了。 这是您的绿色酒吧。 现在做得更好。”

有良好的

必须像对待学科一样对待TDD。 您必须养成良好的生活习惯。 TDD的良好习惯宣言 。 在Mani SarkarPedro Santos 主持下的会议中,这是SoCraTes UK '16的首次会议,他们挑战了我们在原始草案中添加或删除实践的方法,您可以在此处看到。

结论

好吧,似乎我对TDD的了解最少。 仍然需要练习很多,并应用我在编码时学到的知识。 以下是一些您可以阅读的书:

翻译自: https://www.javacodegeeks.com/2016/06/mastering-tdd.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值