6

我想以 BDD 风格描述测试,例如使用 FlatSpec,但保留 JUnit 作为测试运行器。

ScalaTest 快速入门似乎没有显示任何示例:

http://www.scalatest.org/getting_started_with_junit_4

我首先天真地尝试在@Test方法中编写测试,但这不起作用,并且从未测试过断言:

@Test def foobarBDDStyle {
    "The first name control" must "be valid" in {
        assert(isValid("name·1"))
    }
    // etc.
}

有什么办法可以做到这一点?如果可以将常规测试与 BDD 风格的测试混合并匹配,那就更好了。

4

2 回答 2

11

您可能想要这样做的方式是使用 @RunWith 注释,如下所示:

import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner
import org.scalatest.FlatSpec

@RunWith(classOf[JUnitRunner])
 class MySuite extends FlatSpec {
   "The first name control" must "be valid" in {
        assert(isValid("name·1"))
    }
 }

JUnit 4 将使用 ScalaTest 的 JUnitRunner 将 FlatSpec 作为 JUnit 测试套件运行。

于 2011-01-02T20:48:51.257 回答
6

您不需要defs 和@Test注释。这是一个例子:

import org.scalatest.junit.JUnitRunner
import org.junit.runner.RunWith
import org.scalatest.FlatSpec
import org.scalatest.junit.ShouldMatchersForJUnit

@RunWith(classOf[JUnitRunner])
class SpelHelperSpec extends FlatSpec with ShouldMatchersForJUnit {

  "SpelHelper" should "register and evaluate functions " in {
    new SpelHelper()
      .registerFunctionsFromClass(classOf[Functions])
      .evalExpression(
        "#test('check')", new {}, classOf[String]) should equal ("check")
  }

  it should "not register non public methods " in {
    val spelHelper = new SpelHelper()
      .registerFunctionsFromClass(classOf[Functions])
    evaluating { spelHelper.evalExpression("#testNonPublic('check')",
      new {}, classOf[String]) } should produce [SpelEvaluationException]
  }
}

资源

于 2011-01-02T20:47:22.337 回答