BDD:Baby步骤如何工作?

时间:2011-07-08 17:38:56

标签: architecture bdd

我正在尝试了解BDD并且我已经阅读了有关婴儿步骤的内容。他们是如何工作的?我想弄清楚。

例如,使用以下功能:

Feature: Months and days to days 
In order to see months and days as days
As a date conversion fan 
I need a webpage where users can enter days and
     months and convert them to days.

Scenario: Convert 12 months and 0 days to days 
Given “12” months And “0” days
When I click on convert button 
Then I should get: 360

我应该创建一个代码来使步骤方法中的转换正确,然后重构代码并将它们放在类中,还是应该从类开始?

看起来很简单,但我很困惑。我想了解婴儿步骤,我不想打破它......

谢谢。

3 个答案:

答案 0 :(得分:1)

据我所知,宝贝步骤意味着您必须逐步执行少量更改。它类似于TDD:编写新测试,编写代码,确保它不起作用,使其工作正常,编写新测试......等 让我们看看你的例子:

  

将12个月零天转换为天数给定“12”个月和“0”天   当我点击转换按钮然后我应该得到:360

我认为,你要做的第一件事就是像“转换器”一样创建类名。第一步完成。下一个小步骤是创建方法

int convertToDays(int monthCount,int daysCount)

按此步骤操作。您首先描述代码的行为,然后编写代码。 接下来的步骤将是:

  1. 使用int值填充方法以正常工作
  2. 使用字符串输入值。
  3. 添加
  4. 中输入的数据验证
  5. 如果输入无效,则发出用户通知
  6. 进行一些重构
  7. 我希望它会对你有所帮助。感谢。

答案 1 :(得分:0)

你的问题很难理解,但是通过宝贝步骤,作者可能意味着从一个非常基本的场景开始,然后开始更复杂的场景。对于您描述的故事,最基本的示例可能是输入0个月和0天,并验证结果是0天。从那里你可以只输入几天或几个月,最后输入一个包含月和日的例子。

答案 2 :(得分:0)

您还没有说过您正在使用什么平台,或者您是否还有任何代码。红宝石? Rails的? Java的? C#?蟒?

婴儿步骤意味着以非常小的步骤移动,不出所料,每次都重新运行测试。 “Baby steps”最初被设想为应用于单元测试级别的内部红绿重构循环。 BDD已经出现并在验收测试级别添加了外部循环。 BDD风格是发展为“从外到内”。

还有另一个经常组合使用的短语,类似于“让编译器指导您的步骤”。

假设你没有代码,并且你正在使用说Cucumber和RSpec - 其他平台上的描述不会有太大变化 - 当你用黄瓜运行你的故事它会告诉你你有未实现的步骤,甚至给你基本的建议至于如何实现你的When When和Then。

所以,宝贝步骤。拿其中一个,让我们说“给定”,并使用建议的实现。你在Ruby中创建了一些步骤代码,这个模式与行匹配,然后调用什么......现在没什么。在这段代码中,它可能只是简单地将参数转换为整数(稍后您可能会构建构造函数,但现在只做最简单的事情)。

当你再次运行黄瓜时,它会抱怨两个缺失的步骤,但是关于你填写的步骤的消息已经改变了。

现在填写下一步。再次运行黄瓜时,只有最后一步失败。但是你必须在第二步中添加更多内容。等

查看本教程,它会给你一些想法。

http://www.slideshare.net/josephwilk/outsidein-development-with-cucumber-and-rspec