2011-01-02 15 views
6

BDD stilindeki testleri örn. FlatSpec ile fakat JUnit'i test koşucusu olarak tutun.ScalaTest BDD sözdizimini bir JUnit ortamında kullanmak mümkün mü?

ScalaTest Hızlı Başlangıç ​​Bunların hiçbirini örneğini göstermek için görünmüyor:

http://www.scalatest.org/getting_started_with_junit_4

Ben ilk @Test yöntemlerle dahilinde testleri yazmak için safça çalıştı, ancak bu işe yaramazsa ve iddia test asla :

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

Bunu başarmanın bir yolu var mı? Düzenli testlerin BDD tarzı testlerle karıştırılıp eşleştirilebilmesi daha da iyi olacaktır.

cevap

11

muhtemelen bunu istediğiniz şekilde böyle, @RunWith ek açıklama kullanmaktır: İşte bir örnek FlatSpec'i bir JUnit test paketi olarak çalıştırın.

+0

JUnitRunner ile tüm ScalaTest'leri varsayılan olarak çalıştırmak mümkün mü? Nedeni: Gradle'dan test yapmak istiyoruz ve görünüşe göre JUnitRunner daha iyi entegrasyon kabiliyetleri sağlıyor. –

6

def s ve @Test ek açıklamalarına sahip olmanız gerekmez. 4 ScalaTest en JUnitRunner kullanacak

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:

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

İlgili konular