2011-01-02 7 views
6

BDD形式のテストについて説明したいと思います。 FlatSpecではJUnitをテストランナーにしてください。JUnit環境でScalaTest BDD構文を使用することはできますか?

ScalaTestクイックスタートは、このいずれかの例を示していないようだ。

http://www.scalatest.org/getting_started_with_junit_4

私が最初@Testメソッド内のテストを記述するために単純にしようとしたが、それは動作しませんし、アサーションがテストされることはありません:

これを達成する方法はありますか?定期的なテストをBDDスタイルのテストと組み合わせて組み合わせることができればさらに良いでしょう。

答えて

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テストスイートとして実行します。

+0

デフォルトでは、すべてのScalaTestをJUnitRunnerで実行できますか?その理由は、Gradleからテストを実行したいと思います.JUnitRunnerはより優れた統合機能を提供します。 –

6

def@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] 
    } 
} 

Source

関連する問題