黄瓜和JUnit测试

时间:2014-02-20 12:55:09

标签: testing junit cucumber

我们正在构建一个新的应用程序,我们正在考虑使用哪些测试框架。我们想要做两种类型的测试:

  1. 测试执行线程可以采用的所有可能的逻辑路径(因此这更像是技术/开发人员级别的测试策略)。我们可以通过创建一个程序来组合生成所有必需的测试数据。
  2. 仅测试应用程序所需的业务用例(因此这更倾向于QA和BA)。
  3. 我的想法是,(1)我们使用JUnit,而(2)我们使用Cucumber。我没有黄瓜的经验。我的问题是可以用一个像Cucumber这样的框架来实现(1)和(2),或者如上所述将它们分开是最佳实践。

1 个答案:

答案 0 :(得分:2)

我倾向于同意您的评估,即JUnit(或其他单元测试框架)最适合第1类,而Cucumber非常适合第2类。黄瓜是编写自然语言(或多或少)规范的框架(用Gherkin语言),因此它的优势在于编写可执行的应用程序规范。

对于纯粹的技术测试,为了实施最大的测试覆盖率,您实际上只是通过在业务级语言(Gherkin / Cucumber)中编写测试来使自己变得更加困难。用例如编写测试JUnit将减少摩擦力。

为了更好地理解Cucumber及其在开发链中的作用,与其他(BDD)工具(例如RSpec)相比,我建议阅读The RSpec Book。特别是,它建议RSpec(更类似于xUnit框架)用于测试系统的隔离部分,而Cucumber用于测试整个应用程序。本书特别有价值,因为它是由所述工具的创建者(RSpec / Cucumber)创作的,因此您可以了解这些工具如何用于

示例Cucumber规范,测试本身在Scenario块内:

Feature: Serve coffee
    Coffee should not be served until paid for
    Coffee should not be served until the button has been pressed
    If there is no coffee left then money should be refunded

Scenario: Buy last coffee
    Given there are 1 coffees left in the machine
    And I have deposited 1$
    When I press the coffee button
    Then I should be served a coffee