2010-12-22 8 views
20

Estoy tratando de ejecutar una prueba scala flatspec dentro de Intellij IDEA (última versión de comunidad, con el último complemento de Scala), pero sigo recibiendo errores de "suite de pruebas vacías".¿Cómo ejecuto Scala ScalaTest en la idea de IntelliJ?

Intenté utilizar el menú normal "ejecutar" con el botón derecho, pero no funciona. También intenté crear una nueva configuración de ScalaTest, pero aún así el corredor no recoge las pruebas.

Pude usar JScalaTest con la unidad, pero preferiría usar la sintaxis de flatspec.

ACTUALIZACIÓN: anotar la clase con @RunWith(classOf[JUnitRunner]) no ayuda tampoco

Gracias!

class SampleTestSpec extends FlatSpec with ShouldMatchers { 
    "test" should "fail" in { 
     "this" should equal ("that") 
    } 
} 

ACTUALIZACIÓN: Al cambiar de ScalaTest a Spec, se solucionó el problema. Todavía prefiero ScalaTest con FlatSpec, pero esto es lo suficientemente bueno. El código que funciona:

import org.specs._ 
object SampleTestSpec extends Specification { 
    "'hello world' has 11 characters" in { 
    "hello world".size must be equalTo(113) 
    } 
    "'hello world' matches 'h.* w.*'" in { 
    "hello world" must be matching("h.* w.*") 
    } 
} 

-teo

+0

habría sido agradable si usted ha mencionado la versión actual números. 'Último' es un objetivo en movimiento. – akauppi

+3

IMPORTANTE: Dependiendo de las circunstancias, IntelliJ no recoge casos de pruebas escritos con ScalaTest, como FunSpec, por ejemplo. Asegúrese de configurar la "Configuración de ejecución" -> "ScalaTest" para que el combo "Tipo de prueba" diga "Todo en el paquete". Quiero decir: configure los valores predeterminados de esta manera, de lo contrario, IntelliJ puede o no crear una nueva configuración de la manera que usted esperaría. –

+1

IMPORTANTE # 2: Si está utilizando SBT, use el plugin sbt-idea para generar archivos de configuración para IntelliJ, que son necesarios cuando define "Configuraciones de ejecución". –

Respuesta

4

He estado corriendo como este (sin embargo me parece que es un poco prolijo y es probable que se puede reducir):

@RunWith(classOf[JUnitSuiteRunner]) 
class AuthorisationParserRunAsTest extends JUnit4(AuthorisationParserSpec) 
object AuthorisationParserSpec extends Specification { 
    ... 
} 
+0

Así que cambié de ScalaTest a Especificación y ahora funciona. Puedo confirmar que no necesita la clase repetitiva ni el @RunWith: import org.specs._ objeto AuthorisationParserSpec extends Specification {will do –

0

yo sepa, la JUnitRunner es exactamente para esto.

+0

tnx - Intenté eso, aún no voy –

0

Sólo un poco demasiado tarde, pero me he encontrado con el mismo problema ("banco de pruebas vacío") Después de colgar alrededor de error de seguimiento de IDEA, he encontrado una solución para mi caso:
mi versión era scala2.9.0-1 y scala-test tiene versión 2.8.*.
Comenzó a funcionar después de actualizar scala-test a la versión más nueva (igual que una scala).

2

ScalaTest tiene an Overview sobre todas las posibilidades; Yo sólo anotada todas las clases de prueba con

@RunWith(classOf[JUnitRunner]) 
13

Si IntelliJ no recoge las pruebas de forma automática, puede hacer lo siguiente:

En la configuración de ejecución, cree una configuración ScalaTest carrera y se nombraron su "Test tipo "a" Todo en paquete "y su" Paquete de prueba "al paquete que contiene sus pruebas.

0

He podido ejecutar pruebas de FunSuite en IntelliJ sin ningún problema. Sin embargo, lo que he encontrado al trabajar con las pruebas FlatSpec, es que debes hacer clic derecho o ubicar el cursor en la definición de la clase de prueba real si utilizas Ctrl + Shift + F10 (es decir, ejecutar todas las pruebas) para que se ejecute correctamente todas las pruebas definidas y evitar los frustrantes errores de "suite de pruebas vacías".

6

Esto funcionó para mí: configuraciones Editar -> tipo de prueba: Todos en el paquete

0

En caso de que ayuda a nadie - me golpeó este fresco a Scala y fue debido a la forma en que había Estructuré mi prueba clase.Tenía

class SomeTests extends FlatSpec { 
    def aTest = { 
    "This thing when that thing happens" should 
    "return some particular response" in { 
     // ... test body 
    } 
    } 
} 

El problema era que envolví mi prueba en un método, sin darse cuenta de que, en este contexto, las pruebas tienen que estar desnudo:

class SomeTests extends FlatSpec { 

    "This thing when that thing happens" should 
    "return some particular response" in { 
     // ... test body 
    } 

}