J'ai des problèmes aujourd'hui avec l'exécution d'un test TestKit simple dans Intellij. Les tests sont pour Scala (j'ai le Scala pour Intellij) et sont basés sur l'exemple de Ray Roestenburg ).
Le projet Intellij a été créé à l'aide d'un "module Maven" auquel j'ai ensuite ajouté toutes les dépendances et créé mon projet. Les tests sont situés à l'endroit suivant:
ActorBlast/src/test/scala/basicTest.scala
Je fais un "clic droit" sur le test et je sélectionne "Exécuter". Ce que j'obtiens est l'erreur suivante:
"C:\Program Files\Java\jdk1.7.0_25\bin\Java" -Didea.launcher.port = 7540 ... Les tests ont commencé à 2:29 PM ... Impossible de charger une classe Suite. Cela peut être dû à une erreur dans votre chemin d'exécution.
Classe manquante: BasicActorSpec Java.lang.ClassNotFoundException: BasicActorSpec sur Java.net.URLClassLoader $ 1.run (URLClassLoader.Java:366) sur Java.net.URLClassLoader $ 1.run (URLClassLoader.Java:355) sur Java.security.AccessController. doPrivileged (Native Method) sur Java.net.URLClassLoader.findClass (URLClassLoader.Java:354) sur Java.lang.ClassLoader.loadClass (ClassLoader.Java:424) sur Sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.Java: 308) sur Java.lang.ClassLoader.loadClass (ClassLoader.Java:357) sur org.scalatest.tools.Runner $$ anonfun $ 35.apply (Runner.scala: 2393) sur org.scalatest.tools.Runner $$ anonfun $ 35 .apply (Runner.scala: 2391) at scala.collection.TraversableLike $$ anonfun $ filter $ 1.apply (TraversableLike.scala: 264) at scala.collection.immutable.List.foreach (List.scala: 318) at scala. collection.TraversableLike $ class.filter (TraversableLike.scala: 263) sur scala.collection.AbstractTraversable.filter (Traversable.scala: 105) sur org.scalatest.tools.Runner $ .doRunRunRunDaDoRunRun (Runner.scala: 2391) sur o rg.scalatest.tools.Runner $$ anonfun $ runOptionallyWithPassFailReporter $ 2.apply (Runner.scala: 1006) sur org.scalatest.tools.Runner $$ anonfun $ runOptionallyWithPassFailReporter $ 2.apply (Runner.scala: 100al) à 1005) tools.Runner $ .withClassLoaderAndDispatchReporter (Runner.scala: 2659) sur org.scalatest.tools.Runner $ .runOptionallyWithPassFailReporter (Runner.scala: 1005) sur org.scalatest.tools.Runner $ .run (Runner.scala) org.scalatest.tools.Runner.run (Runner.scala) at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2 (ScalaTestRunner.Java:144) at org.jetbrains.plugins.scala.testingSpl ScalaTestRunner.main (ScalaTestRunner.Java:35) sur Sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) sur Sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.Java:57) sur Sun.reflect.DelccessAmpletAccessorModel 43) sur Java.lang.reflect.Method.invoke (Method.Java:606) sur com.intellij.rt.execution.applic ation.AppMain.main (AppMain.Java:120)
Processus terminé avec le code de sortie 0
Je ne peux pas comprendre ce que cela signifie. J'ai fait beaucoup de recherches mais je n'arrive pas à trouver de réponse. Notez que la classe que le coureur se plaint de ne pas trouver est la classe que j'essaie de tester/exécuter. Le basicTest.scala ressemble à ceci:
// Testing specific imports
import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner
import org.scalatest.{ShouldMatchers, WordSpecLike, BeforeAndAfterAll}
import akka.testkit.{TestKit, DefaultTimeout, ImplicitSender}
// Actor specific imports
import akka.actor.{ActorRef, Actor, ActorSystem, Props}
// Misc. needed imports
import scala.concurrent.duration._
import com.typesafe.config.ConfigFactory
// In order to run tests in this module you need to use JUnitRunner (as per scalatest.org)
@RunWith(classOf[JUnitRunner])
class BasicActorSpec extends TestKit(ActorSystem("BasicActorSpec", ConfigFactory.parseString(BasicActorSpec.config)))
with DefaultTimeout with ImplicitSender with WordSpecLike with ShouldMatchers with BeforeAndAfterAll {
import BasicActorSpec._
val echoRef = system.actorOf(Props[EchoActor])
val forwardRef = system.actorOf(Props[ForwardActor])
override def afterAll {
shutdown(system)
}
/**
* The actual tests...
*/
"An EchoActor" should {
"Respond with the same message it receives" in {
within(500 millis) {
echoRef ! "test"
expectMsg("test")
}
}
}
"A Forwarding Actor" should {
"Forward a message it receives" in {
within(500 millis) {
forwardRef ! "test"
expectMsg("test")
}
}
}
}
/**
* Companion object of test class
*/
object BasicActorSpec {
val config =
"""
|akka {
| loglevel = "Warning"
|}
""".stripMargin
/**
* Classes of Actors used in testing
*/
class EchoActor extends Actor {
def receive = {
case msg => sender ! msg
}
}
class ForwardActor(next: ActorRef) extends Actor {
def receive = {
case msg => next ! msg
}
}
}
Toute aide quant à la raison pour laquelle je reçois cette erreur serait grandement appréciée.
Exécutez la construction du projet - Cela m'a aidé à résoudre ce problème qui aurait pu m'arriver lorsque j'ai effacé le cache IDEA :) tout en essayant de résoudre un autre problème
Vous devez configurer le Scala SDK. 1.) Habituellement, intelliJ vous demandera en affichant un message dans le coin droit de votre éditeur 2.) Vous pouvez le faire vous-même comme mentionné sur le https://www.jetbrains.com/help/idea/discover-intellij-idea-for-scala.html
J'ai rencontré ce problème lorsque j'ai utilisé Gatling
Je le corrige en remplaçant gatling-classes
à test-classes
dans Fichier -> Structure du projet -> Modules -> Nom du module -> Chemins -> Chemin de sortie de test
Dans mon cas, il me manquait la facette Scala dans mon module.
https://blog.jetbrains.com/scala/2010/09/02/project-configuration-explained/
Je me suis débarrassé de l'erreur une fois que j'ai correctement configuré le module.
Si vous utilisez IntelliJ pour exécuter scalatest, assurez-vous que les chemins de classe sont corrects. Par exemple:
/dummyApp
votre build.sbt
devrait ressembler, name := "dummyApp"
. Si vous l'appelez name := "dummy App"
vous obtiendrez des erreurs.
Ce problème m'est arrivé récemment lorsque j'essayais d'exécuter des tests dans un projet hérité Scala utilisant IntelliJ IDEA 2018 ( Community Edition) . Les étapes ci-dessous m'ont aidé à le corriger:
Chemin de sortie: /home/rustam/IdeaProjects/{project}/{module}/target/scala-2.12/classes
Tester le chemin de sortie: /home/rustam/IdeaProjects/{project}/{module}/target/scala-2.12/test-classes
Dans mon cas, j'avais en Preferences -> Build, Execution, Deployment -> sbt
Use sbt Shell for build and import
case à cocher activée
Et le test n'était pas dans le répertoire attendu src/test
mais en src/it
(test intégré).
Mon projet avait déjà la configuration mentionnée par @Rustam Aliyev. Obtenait toujours la même exception. La reconstruction du projet n'a pas aidé non plus. Assez bizarre; mais le redémarrage du IDE a aidé à résoudre le problème
J'ai rencontré l'erreur lorsque la classe de test ne faisait partie d'aucun package.