6

たとえばFlatSpecを使用したBDDスタイルのテストについて説明したいのですが、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 に答える