2011-01-02 18 views
6

Me gustaría describir las pruebas en estilo BDD, p. con FlatSpec, pero mantén JUnit como un corredor de prueba.¿Es posible usar la sintaxis ScalaTest BDD en un entorno JUnit?

El ScalaTest de inicio rápido no parece mostrar ningún ejemplo de esto:

http://www.scalatest.org/getting_started_with_junit_4

primer lugar, trató ingenuamente escribir pruebas dentro @Test métodos, pero que no funciona y la afirmación no es nunca probé :

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

¿Hay alguna manera de lograr esto? Sería incluso mejor si las pruebas regulares se pueden mezclar y combinar con las pruebas de estilo BDD.

Respuesta

11

La forma es probable que desee hacerlo es utilizar la anotación @RunWith, así:

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 utilizará JUnitRunner de ScalaTest a ejecutar el FlatSpec como un conjunto de pruebas JUnit.

+0

¿Es posible ejecutar todos los ScalaTests con JUnitRunner de forma predeterminada? La razón: nos gustaría ejecutar pruebas desde Gradle, y aparentemente, JUnitRunner brinda mejores capacidades de integración. –

6

No es necesario que tenga las anotaciones def sy @Test. Aquí está un ejemplo:

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

Cuestiones relacionadas