Java / Scala的功能级行为测试工具

时间:2010-06-08 20:00:23

标签: java scala bdd

是否存在与Cucumber / SpecFlow等效的Java或Scala?一种可能性是使用带有JRuby的Cucumber;还有其他人吗?

6 个答案:

答案 0 :(得分:8)

看看ScalaTest with Feature Spec。 ScalaTest网站上的示例功能规范:

import org.scalatest.FeatureSpec
import org.scalatest.GivenWhenThen
import scala.collection.mutable.Stack

class ExampleSpec extends FeatureSpec with GivenWhenThen {

  feature("The user can pop an element off the top of the stack") {

    info("As a programmer")
    info("I want to be able to pop items off the stack")
    info("So that I can get them in last-in-first-out order")

    scenario("pop is invoked on a non-empty stack") {

      given("a non-empty stack")
      val stack = new Stack[Int]
      stack.push(1)
      stack.push(2)
      val oldSize = stack.size

      when("when pop is invoked on the stack")
      val result = stack.pop()

      then("the most recently pushed element should be returned")
      assert(result === 2)

      and("the stack should have one less item than before")
      assert(stack.size === oldSize - 1)
    }

    scenario("pop is invoked on an empty stack") {

      given("an empty stack")
      val emptyStack = new Stack[String]

      when("when pop is invoked on the stack")
      then("NoSuchElementException should be thrown")
      intercept[NoSuchElementException] {
        emptyStack.pop()
      }

      and("the stack should still be empty")
      assert(emptyStack.isEmpty)
    }
  }
}

答案 1 :(得分:6)

specs提供带有“forms”的识字规范,以开发类似Fit的规范。您可以使用here找到解释some exampleswhat can be done it的基本原理的帖子。

但请注意,该库仍处于alpha模式,因为我计划在Scala 2.8.0安置后给予更多关注。

答案 2 :(得分:4)

现在您可以使用Cucumber并使用Java或纯Scala定义步骤。

这里有一个简短易懂的教程,介绍如何在Scala中使用SBT:http://func.io/post/36452127031/pure-scala-bdd-made-easy-with-sbt-and-cucumber

答案 3 :(得分:3)

JBehave与Scala一起工作得很好。例如,在本文中,http://jnb.ociweb.com/jnb/jnbJun2010.html有一个zip文件的链接,其中包含使用完全在Scala中实现的JBehave的示例应用程序。

直接链接到zip:http://www.ociweb.com/jnb/jnbJun2010-scala-bowling.zip

答案 4 :(得分:1)

如果您想将测试代码与验收文本分开,请查看Fitness。否则,SpecsScalaTest都支持BDD风格(规范被编写为BDD风格),许多其他Java框架都支持它。

答案 5 :(得分:1)

JBehave在Cucumber发布后被重写,因此我们也可以使用纯文本。当我们编写Gherkin时,Gherkin没有出来,所以它不会完全相同 - 使用令牌而不是regexp - 但它会做同样的工作。

http://jbehave.org