У меня сегодня есть проблемы с запуском простого теста TestKit в Intellij. Тесты для кода Scala (у меня есть плагин Scala для Intellij) и основаны на примере Рэя Рестенбурга.
Проект Intellij был создан с использованием модуля Maven, который затем добавил все зависимости и создал мой проект. Тесты находятся в следующем месте:
ActorBlast/SRC/тест/scala/basicTest.scala
Я в основном "щелкаю правой кнопкой" по тесту и выбираю "Запустить". Я получаю следующую ошибку:
"C:\Program Files\Java\jdk1.7.0_25\bin\java" -Didea.launcher.port = 7540... Тестирование началось в 2:29 вечера... Не удалось загрузить класс Suite. Это может быть связано с ошибкой в вашей траектории пути.
Отсутствует класс: BasicActorSpec java.lang.ClassNotFoundException: BasicActorSpec в java.net.URLClassLoader $1.run(URLClassLoader.java:366) в java.net.URLClassLoader $1.run(URLClassLoader.java:355) в java.security.AccessController.doPrivileged(собственный метод) в java.net.URLClassLoader.findClass(URLClassLoader.java:354) в java.lang.ClassLoader.loadClass(ClassLoader.java:424) в sun.misc.Launcher $AppClassLoader.loadClass(Launcher.java.308) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) в 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 $фильтр $1.Apply(TraversableLike.scala: 264) в scala.collection.immutable.List.foreach(List.scala: 318) at 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) в org.scalatest.tools.Runner $.withClassLoaderAndDispatchReporter(Runner.scala: 2659) в 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) в org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2 (ScalaTestRunner.java:144) в org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.main(ScalaTestRunner.java:35) at sun.reflect.NativeMethodAccessorImpl.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)
Процесс завершен кодом выхода 0
Я не могу понять, что это значит. Я много искал, но, похоже, не нашел ответа. Обратите внимание, что класс, на который бегун жалуется, не находит класс, который я пытаюсь проверить/запустить. BasicTest.scala выглядит следующим образом:
// 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
}
}
}
Любая помощь относительно того, почему я получаю эту ошибку, была бы высоко оценена.