with started plugin para intellijidea intellij instalar getting configurar scala intellij-idea akka

started - scala ide



''No se puede cargar una clase de Suite'' mientras se ejecuta ScalaTest en IntelliJ (9)

Hoy tengo algunos problemas con la ejecución de una prueba TestKit simple en Intellij. Las pruebas son para el código Scala (tengo el complemento Scala para Intellij) y se basan en el ejemplo de Ray Roestenburg .

El proyecto Intellij fue creado usando un "Módulo Maven" al cual luego agregué todas las dependencias y creé mi proyecto. Las pruebas están ubicadas en el siguiente lugar:

ActorBlast / src / test / scala / basicTest.scala

Básicamente hago "clic derecho" en la prueba y selecciono "Ejecutar". Lo que obtengo es el siguiente error:

"C: / Archivos de programa / Java / jdk1.7.0_25 / bin / java" -Didea.launcher.port = 7540 ... Las pruebas comenzaron a las 2:29 PM ... No se pudo cargar una clase de Suite. Esto podría deberse a un error en su runpath.

Clase faltante: BasicActorSpec java.lang.ClassNotFoundException: BasicActorSpec en java.net.URLClassLoader $ 1.run (URLClassLoader.java:366) en java.net.URLClassLoader $ 1.run (URLClassLoader.java:355) en un tipo de objeto en el que se encuentra el hotel. doPrivileged (Método nativo) en java.net.URLClassLoader.findClass (URLClassLoader.java:354) en java.lang.ClassLoader.loadClass (ClassLoader.java:424) en sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java) 308) en java.lang.ClassLoader.loadClass (ClassLoader.java:357) en org.scalatest.tools.Runner $$ anonfun $ 35.apply (Runner.scala: 2393) en org.scalatest.tools.Runner $$ anonfun $ 35 .apply (Runner.scala: 2391) en scala.collection.TraversableLike $$ anonfun $ filter $ 1.apply (TraversableLike.scala: 264) en scala.collection.immutable.List.foreach (List.scala: 318) en scala. collection.TraversableLike $ class.filter (TraversableLike.scala: 263) en scala.collection.AbstractTraversable.filter (Traversable.scala: 105) en org.scalatest.tools.Runner $ .doRunRunRunDaDoRunRun (Runner.scala: 2391) en rg.scalatest.tools.Runner $$ anonfun $ runOptionally With WithPassFailReporter $ 2.apply (Runner.scala: 1006) en org.scalatest.tools.Runner $$ anonfun $ runOptionallyWithPassFailReporter $ 2.apply (Runner.scala). tools.Runner $ .withClassLoaderAndDispatchReporter (Runner.scala: 2659) en org.scalatest.tools.Runner $ .runOptionallyWithPassFailReporter (Runner.scala: 1005) en org.scalatest.tools.Runner $ .run (Runner). org.scalatest.tools.Runner.run (Runner.scala) en org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2. ScalaTestRunner.main (ScalaTestRunner.java:35) en sun.reflect.Native Gen.Pay. 43) en java.lang.reflect.Method.invoke (Method.java:606) en com.intellij.rt.execution.applic ation.AppMain.main (AppMain.java:120)

Proceso terminado con el código de salida 0

No puedo entender lo que esto significa. He buscado mucho pero parece que no puedo encontrar una respuesta. Tenga en cuenta que la clase de la que se está quejando el corredor no es la clase que estoy intentando probar / ejecutar. El basicTest.scala se ve así:

// 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 } } }

Cualquier ayuda en cuanto a por qué estoy recibiendo este error sería muy apreciada.


Así es como resolví la misma excepción:

--> Right click on your project folder in IDE:

--> Click Add Framework Support --> Then Check Scala --> Click OK


Ejecutar compilación del proyecto: me ayudó a resolver el problema que podría haberme ocurrido cuando borré Cache IDEA :) al intentar abordar otro problema


En mi caso tuve en Preferences -> Build, Execution, Deployment -> sbt

Use sbt shell for build and import casilla habilitada

Y la prueba no estaba en el directorio esperado src/test sino en src/it (prueba integrada).



Encontré el error cuando la clase de prueba no era parte de ningún paquete.


Este problema me sucedió recientemente cuando intentaba ejecutar pruebas en un proyecto heredado de Scala utilizando IntelliJ IDEA 2018 (Community Edition) . A continuación los pasos me ayudaron a arreglarlo:

  1. Archivo → Estructura del proyecto → {Elegir módulo específico} → pestaña "Rutas" → Seleccionar "Usar módulo compilar ruta de salida de salida" → Modificar " Probar ruta de salida de salida " para apuntar a la carpeta de clases de prueba . Por ejemplo:

    Ruta de salida : /home/rustam/IdeaProjects/{project}/{module}/target/scala-2.12/classes
    Ruta de salida de la prueba : /home/rustam/IdeaProjects/{project}/{module}/target/scala-2.12/test-classes

  2. A IntelliJ no le gustan las múltiples clases de Scala definidas en un archivo, así que asegúrese de que la clase de prueba tenga el mismo nombre que el archivo de prueba y anide otras clases auxiliares, que puede refactorizar más tarde si es necesario.

Me encontré con este problema cuando usé Gatling

Lo gatling-classes reemplazando gatling-classes de test-classes en Archivo -> Estructura del proyecto -> Módulos -> Nombre del módulo -> Rutas -> Ruta de salida de prueba



Si está utilizando IntelliJ para ejecutar scalatest, asegúrese de que las rutas de clase sean correctas. Por ejemplo:

/dummyApp

su build.sbt debería verse, name := "dummyApp" . Si lo nombras name := "dummy App" obtendrás errores.