tia*_*ldt 14 bdd scala scalatest specs2
我过去常用莴苣做蟒蛇.它是一个简单的BDD框架,其中规范是在外部纯文本文件中编写的.实现使用正则表达式来识别每个步骤,为规范中的每个句子提供可重用的代码.
使用scala,使用specs2或scalatest我被迫在实现中编写规范,使得无法在另一个测试中重用该实现(当然,我们可以在某个地方的函数中实现它)并使其无法分离来自规范本身的测试实现(我曾经做过的事情,为客户提供验证测试).
最后,我提出了一个问题:考虑到客户端验证测试的重要性,scala中是否有一种方法可以让scala从外部文件加载测试,如果测试中的句子尚未实现并执行如果所有句子都已实施,通常会进行测试
tia*_*ldt 12
我刚刚为sbt发现了一个黄瓜插件.测试将在test/scala下实现,规范将作为普通txt文件保存在test/resources中.我只是不确定图书馆的可靠性以及它是否会在将来获得支持.
编辑:以上是以下插件的包装,它完美地解决了问题并支持Scala. https://github.com/cucumber/cucumber-jvm
这完全取决于权衡.黄瓜风格的规格很棒,因为它是纯文本,非编码人员可以轻松编辑和阅读.
然而,它们作为规范也非常严格,因为它们强加了基于特征和Given-When-Then的严格格式.例如,在specs2中,我们可以编写任何我们想要的文本,并仅注释那些对系统或验证有意义的行.缺点是文本被注释,pending必须明确指定以指示尚未实现的内容.此外,注释只是对某些代码的引用,生活在某处,您当然可以使用通常的编程技术来获得可重用性.
顺便说一下,上面的链接是一个有趣的权衡示例:在这个文件中,第一个规范是"丑陋的",但是有更多的编译时检查,该When步骤使用步骤中的信息Given或我们没有一系列Then -> When步骤.第二个规范更好,但也更容易出错.
然后是维护正则表达式的问题.如果编写功能的人与实现功能的人之间存在严格的分离,那么即使没有实质性的改变,也很容易打破实现.
最后,还有版本控制的问题.谁拥有该文件?我们怎样才能确保代码与规范同步?谁在需要时重构规范?
到目前为止,还没有完美的解决方案.我自己的结论是BDD工件应该由开发人员掌握并由其他利益相关者验证,如果它是可读的或者读取html/pdf输出,则直接读取代码.如果BDD工件由开发人员拥有,他们也可以使用他们自己的工具通过验证(尽可能使用编译器)和维护(使用自动重构)使他们的生活更轻松.
| 归档时间: |
|
| 查看次数: |
6045 次 |
| 最近记录: |