如何在不太"暴躁"的环境中使用TDD

Mor*_*dur 8 php mysql tdd

我在一家OOP工作的公司工作......好吧,不要因为"过于复杂"而感到沮丧.我的同事写了很多100多行函数,它们通常都在"funcs.inc.php"或"something.inc.php"中,如果它们完全使用任何函数,通常它们都不会,因为复制粘贴是快点.

我想开始使用TDD至少我写的代码,但因为我必须与他们的代码接口,我不知道如何开始.

这不是遗留代码,因为他们正在积极开发它,我不想修改他们的代码,因为我不想引发冲突.

除了更换公司外,您会建议采用哪种方法?

Tim*_*ost 11

我一直处于这个位置,两者都是在实际的TDD中.我通常做的是尽可能为其他人的界面编写测试.在我运行我的代码之前,我知道如果他们做了人们做的许多常见事情之一:

  1. 通过重命名或完全取消某些东西来破解API
  2. 使用未被注意到的细微类型更改来破解API
  3. 在没有测试的情况下推出了有毒的修订
  4. 弹出内存泄漏(我的测试套件是Valgrind意识到的)
  5. 阻止以前从未阻止的地方

任何失败通常会导致我说"嘿,你能检查(模块),我认为它在最后一次修订中破了"

这只丑陋一次.其他人真的很沮丧,我正在为他们的代码编写测试,并坚持认为我是出于他们的工作.我无法让那个人明白我只是为了让我的工作更轻松.

直接说出"看,我花费更多时间调试你的代码而不是自己工作"绝不是一个好主意,除非你绝对必须(即你的老板询问你的表现).大多数情况下,如果您只是向人们发送测试,他们很乐意拥有它们.如果你已经遇到了这个想法的阻力,试着不要冒犯任何人或看起来居高临下.

模拟函数/存根是可以的,但剩下的是如果没有运行真正的测试,整个程序仍然可能会中断.至少,当发生这种情况时,你可以快速排除你的东西,并且(可能)指出问题所在.

  • 外交+1,特别是"我认为**它在上一次修订中打破了**".责备永远不会有助于士气. (2认同)