Существует ли Java или Scala, эквивалентный Cucumber/SpecFlow? Одна возможность использует Огурец с JRuby; какие-либо другие?
Посмотрите на 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)
}
}
}
JBehave прекрасно работает со Scala. Для примера, в этой статье, http://jnb.ociweb.com/jnb/jnbJun2010.html есть ссылка на zip файл, который содержит пример приложения с использованием JBehave, реализованный полностью на Scala.
Прямая ссылка на zip: http://www.ociweb.com/jnb/jnbJun2010-scala-bowling.zip
specs предоставляет Literate Specifications с "forms" для разработки Fit-подобных спецификаций. Вы можете найти пост, объясняющий смысл этого здесь, и некоторые примеры того, что можно сделать с этим.
Обратите внимание, что библиотека все еще находится в альфа-режиме, поскольку я планирую уделить ей больше внимания, как только Scala 2.8.0 приживется.
Посмотрите на Fitness , если вы хотите отделить тестовый код от текста приема. В остальном и Specs , и ScalaTest поддерживают стиль BDD (спецификации были написаны в стиле BDD), и многие другие платформы Java поддерживают это хорошо.
JBehave был переписан после выпуска Cucumber, так что мы могли также использовать простой текст. Когда мы писали Gherkin, он не разбирается точно так же - использует токены вместо регулярного выражения - но выполняет ту же работу.