软件开发中的测试驱动开发(TDD)全解析
1. 分离意图与实现的示例
在软件开发中,分离意图与实现是一项重要的任务。我们可以借助 Chris Stevenson 的 TestDox 来达成这一目标。TestDox 能把代码里的主题当作句子的一部分来呈现。
例如以羊为例:
- 羊吃草。
- 羊受惊时会咩咩叫。
- 羊能产出美味的奶。
- 羊会远离牧羊犬。
在这个例子中,羊是主体,其行为通过句子表达出来,并且能够自动转化为代码规范。这里使用 Minitest 测试框架的 spec 风格来描述羊的行为,Minitest 是随 Ruby 语言一起提供的。当从外部思考一个系统时,我们关注的是意图,也就是羊会做什么。
再看 RSpec 中 eq() 方法的测试 API 示例,它展示了如何使用 eq() 方法比较两个相等和不相等的字符串,让开发者能更直观地了解该方法的用法。
还有保龄球游戏的例子,最初的测试代码如下:
it 'score is 10 for a strike - knocking down all ten pins' do
game = BowlingGame.new
10.times { game.roll(1) }
assert_equal 10, game.score
end
这段代码没有揭示滚动十次的意图,因为意图被隐藏了。我们可以通过询问“击倒所有十个球瓶意味着什么”来使意图明确。在保龄球游戏领域,这意味
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



