在IntelliJ中运行ScalaTest时“无法加载Suite类”

问题描述:

我今天在Intellij中运行简单的TestKit测试时遇到了一些问题。测试针对Scala代码(我具有Intellij的Scala插件)​​,并且基于 Ray Roestenburg的示例

I'm having some issues today with running a simple TestKit test in Intellij. The tests are for Scala code (I have the Scala plug-in for Intellij) and are based on Ray Roestenburg's example.

Intellij项目是使用 Maven模块创建的,然后我将所有依赖项添加到该模块并创建了我的项目。测试位于以下位置:

The Intellij project was created using a "Maven Module" which I then added all the dependencies to and created my project. The tests are located in the following place:


ActorBlast / src / test / scala / basicTest.scala

ActorBlast/src/test/scala/basicTest.scala

我基本上是在测试中右键单击并选择运行。我得到的是以下错误:

I'm basically "right-clicking" on the test and selecting "Run". What I get is the following error:


C:\Program Files\Java\jdk1.7.0_25\bin\ \java -Didea.launcher.port = 7540 ...
测试从2:29 PM开始...
无法加载Suite类。这可能是由于您的运行路径错误。

"C:\Program Files\Java\jdk1.7.0_25\bin\java" -Didea.launcher.port=7540... Testing started at 2:29 PM ... Unable to load a Suite class. This could be due to an error in your runpath.

缺少类:BasicActorSpec java.lang.ClassNotFoundException:
BasicActorSpec at
java.net.URLClassLoader $ 1.run(URLClassLoader.java:366)在
java.net.URLClassLoader $ 1.run(URLClassLoader.java:355)在
java.security.AccessController.doPrivileged(Native Method)在
java.net.URLClassLoader.findClass(URLClassLoader .java:354)在
处java.lang.ClassLoader.loadClass(ClassLoader.java:424)在
sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308)在
售价为
的java.lang.ClassLoader.loadClass(ClassLoader.java:357)org.scalatest.tools.Runner $$ anonfun $ 35.apply(Runner.scala:2393)售价为
org.scalatest.tools。在
scala.collection处获得Runner $$ anonfun $ 35.apply(Runner.scala:2391).TraversableLike $$ anonfun $ filter $ 1.apply(TraversableLike.scala:264)
在scala.collection.immutable。 List.foreach(List.scala:318)位于
scala.collection.TraversableLike $ class.filter(TraversableLike.scala:263 )在scala.collection.AbstractTraversable.filter(Traversable.scala:105)处的

处的
org.scalatest.tools.Runner $ .doRunRunRunDaDoRunRun(Runner.scala:2391)

org.scalatest.tools.Runner $$ anonfun $ runOptionallyWithPassFailReporter $ 2.apply(Runner.scala:1006)

org.scalatest.tools.Runner $$ anonfun $ runOptionallyWithPassFailReporter $ 2。 apply(Runner.scala:1005)
at
org.scalatest.tools.Runner $ .withClassLoaderAndDispatchReporter(Runner.scala:2659)
at
org.scalatest.tools.Runner $ .runOptionallyWithPassFailReporter(Runner.scala:1005)
在org.scalatest.tools.Runner $ .run(Runner.scala:845)在
org.scalatest.tools.Runner.run(Runner.scala )at
org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2(ScalaTestRunner.java:144)
at
org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner .main(ScalaTestRunner.java:35)
在sun.reflect.NativeMethodAcce ssorImpl.invoke0(本机方法)位于
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在java.lang.reflect.Method.invoke(Method.java:606)在
com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

Missing class: BasicActorSpec java.lang.ClassNotFoundException: BasicActorSpec at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.scalatest.tools.Runner$$anonfun$35.apply(Runner.scala:2393) at 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) at scala.collection.AbstractTraversable.filter(Traversable.scala:105) at org.scalatest.tools.Runner$.doRunRunRunDaDoRunRun(Runner.scala:2391) at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1006) at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1005) at org.scalatest.tools.Runner$.withClassLoaderAndDispatchReporter(Runner.scala:2659) at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:1005) at org.scalatest.tools.Runner$.run(Runner.scala:845) at org.scalatest.tools.Runner.run(Runner.scala) at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2(ScalaTestRunner.java:144) at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.main(ScalaTestRunner.java:35) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

进程以退出代码0完成

我不知道这是什么意思。我已经做了很多搜索,但是似乎找不到答案。请注意,跑步者抱怨找不到的课程是我要测试/运行的课程。 basicTest.scala看起来像这样:

I can't figure out what this means. I've done a lot of searching but can't seem to find an answer. Note that the class the runner is complaining about not finding is the class I'm trying to test/run. The basicTest.scala looks like this:

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

}

任何

运行构建项目-它帮助我解决了该问题当我尝试解决另一个问题时清除Cache IDEA :)时可能发生的问题

Run build the project - It helped me to resolve that issue that could have happened to me when I cleared Cache IDEA :) while trying to tackle another issue