我的一个朋友正在解释他们如何在他的工作场所使用 TDD 进行乒乓配对,他说他们采用“对抗性”方法。也就是说,当测试编写人员将键盘交给实施者时,实施者会尝试做最简单(有时是错误的事情)以使测试通过。
例如,如果他们正在测试 GetName() 方法并且测试检查“Sally”,则 GetName 方法的实现将是:
public string GetName(){
return "Sally";
}
当然,这会(天真地)通过测试。
他解释说,这有助于消除检查特定固定值的幼稚测试,而不是测试组件的实际行为或预期状态。它还有助于推动创建更多测试并最终实现更好的设计和更少的错误。
听起来不错,但在与他的短暂对话中,通过一轮测试似乎比其他方式花费了更长的时间,我并不觉得获得了很多额外的价值。
您是否使用这种方法,如果是,您是否看到它得到了回报?