Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Testing 黄瓜和JUnit试验_Testing_Junit_Cucumber - Fatal编程技术网

Testing 黄瓜和JUnit试验

Testing 黄瓜和JUnit试验,testing,junit,cucumber,Testing,Junit,Cucumber,我们正在构建一个新的应用程序,我们正在考虑使用什么样的测试框架。我们希望进行两种类型的测试: 测试执行线程可以采取的所有可能的逻辑路径(因此这更像是一种技术/开发人员级别的测试策略)。我们可以通过创建一个程序来组合生成所有需要的测试数据 仅测试应用程序所需的业务用例(因此这更倾向于QAs和BAs) 我的想法是,(1)我们使用JUnit,(2)我们使用Cucumber。我对黄瓜没有经验。我的问题是(1)和(2)可以用Cucumber这样的框架来实现,还是像我上面描述的那样将它们分开是最好的做法。我

我们正在构建一个新的应用程序,我们正在考虑使用什么样的测试框架。我们希望进行两种类型的测试:

  • 测试执行线程可以采取的所有可能的逻辑路径(因此这更像是一种技术/开发人员级别的测试策略)。我们可以通过创建一个程序来组合生成所有需要的测试数据
  • 仅测试应用程序所需的业务用例(因此这更倾向于QAs和BAs)

  • 我的想法是,(1)我们使用JUnit,(2)我们使用Cucumber。我对黄瓜没有经验。我的问题是(1)和(2)可以用Cucumber这样的框架来实现,还是像我上面描述的那样将它们分开是最好的做法。

    我倾向于同意您的评估,JUnit(或另一个单元测试框架)最适合于类别1,而Cucumber最适合于类别2。Cucumber是一个用于编写自然语言(或多或少)规范(语言)的框架,因此它的优势实际上在于编写可执行的应用程序规范

    对于纯技术测试,为了实现最大的测试覆盖率,您实际上只是通过使用业务级别的语言(Gherkin/cumber)编写测试来增加自己的难度。使用JUnit等编写测试所涉及的摩擦要小得多

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

    例如,测试本身在
    场景
    块中:

    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
    

    这证实了我的想法。我们绝对不可能为所有可能的逻辑路径编写cucumber测试;它太冗长了,而且从我在您的代码片段中看到的情况来看,Cucumbers的“存在理由”与JUnits的用途不同。