2010-12-22 3 views
20

J'essaie d'exécuter un test scala flatspec dans Intellij IDEA (dernière version de la communauté, avec le dernier plugin Scala), mais je continue à recevoir des erreurs de "suite de tests vide".Comment lancer une scalaTest ScalaTest dans IntelliJ idea?

J'ai essayé d'utiliser le menu "Exécuter" normal sur un clic droit, mais cela ne fonctionne pas. J'ai également essayé de créer une nouvelle configuration ScalaTest, mais le coureur ne reprend pas les tests.

J'ai été capable d'utiliser JScalaTest avec l'unité, mais je préfère vraiment utiliser la syntaxe flatspec.

MISE À JOUR: annoter la classe avec @RunWith(classOf[JUnitRunner]) ne permet pas non plus

Merci!

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

MISE À JOUR: Passer de ScalaTest à Spec, a résolu le problème. Je préfère toujours ScalaTest avec FlatSpec, mais c'est assez bon. Code qui fonctionne:

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

aurait été bien si vous avez mentionné la version actuelle Nombres. 'Latest' est une cible mouvante. – akauppi

+3

IMPORTANT: Selon les circonstances, IntelliJ ne prend pas en charge les tests écrits avec ScalaTest, comme FunSpec par exemple. Assurez-vous de configurer "Run Configuration" -> "ScalaTest" pour que le combo "Test type" indique "All in package". Je veux dire: configurez les valeurs par défaut de cette façon, sinon IntelliJ peut ou non créer une nouvelle configuration comme vous le souhaitez. –

+1

IMPORTANT # 2: Si vous utilisez SBT, utilisez le plugin sbt-idea afin de générer des fichiers de configuration pour IntelliJ qui sont nécessaires lorsque vous définissez "Run Configurations". –

Répondre

4

Je cours comme ça (mais je ne le trouve un peu bavard et il peut probablement être coupé vers le bas):

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

Donc, je suis passé de ScalaTest à la spécification et maintenant cela fonctionne. Je peux vous confirmer que vous n'avez pas besoin de la classe standard ni de l'objet @RunWith: import org.specs._ AuthorizationParserSpec extends Spécification {will do –

0

AFAIK, le JUnitRunner est exactement pour cela.

+0

tnx - Je l'ai essayé, toujours pas aller –

0

Juste un peu trop tard, mais je l'ai rencontré le même problème ("de suite de tests vide") Après avoir accroché autour bug tracker IDEA, j'ai trouvé une solution pour mon cas:
ma version scala était 2.9.0-1 et scala-test a la version 2.8.*.
Il a commencé à fonctionner après la mise à niveau scala-test vers la version la plus récente (identique à une scala).

2

ScalaTest a an Overview sur toutes les possibilités; J'annotez juste toutes les classes de test avec

@RunWith(classOf[JUnitRunner]) 
13

Si IntelliJ ne capte pas les tests automatiques, vous pouvez effectuer les opérations suivantes:

Dans la configuration Exécuter, créer une configuration d'exécution ScalaTest et mis en place son « Test kind "à" All in package "et son" Test Package "au package contenant vos tests.

0

J'ai été capable d'exécuter des tests FunSuite dans IntelliJ sans aucun problème. Cependant, ce que j'ai trouvé en travaillant avec des tests FlatSpec, c'est que vous devez cliquer avec le bouton droit ou placer votre curseur sur la définition de la classe de test si vous utilisez Ctrl + Shift + F10 (c'est-à-dire exécuter tous les tests) tous les tests définis et éviter les frustrantes "Empty test suite" des erreurs.

6

Cela a fonctionné pour moi: configurations Edition -> Test de type: Tous dans le paquet

0

Dans le cas où il aide quelqu'un - je frappe cette nouvelle à Scala et il a été à cause de la façon dont je l'avais structuré mon test classe.J'ai eu

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

Le problème était que j'enveloppé mon test dans une méthode, sans se rendre compte que, dans ce contexte, les tests doivent être nus:

class SomeTests extends FlatSpec { 

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

} 
Questions connexes