web-dev-qa-db-ja.com

IntelliJでScalaTestを実行中に「スイートクラスをロードできません」

Intellijで簡単なTestKitテストを実行すると、いくつかの問題が発生します。テストはScalaコード(Scala Intellijのプラグインを持っています)に対するものであり、 Ray Roestenburgの例 に基づいています。

Intellijプロジェクトは、「Mavenモジュール」を使用して作成されました。次に、すべての依存関係を追加してプロジェクトを作成しました。テストは次の場所にあります。

ActorBlast/src/test/scala/basicTest.scala

私は基本的にテストを「右クリック」して「実行」を選択しています。私が得るものは次のエラーです:

"C:\ Program Files\Java\jdk1.7.0_25\bin\Java" -Didea.launcher.port = 7540 ... 2:29にテストを開始PM ...できませんSuiteクラスを読み込みます。これは、実行パスのエラーが原因である可能性があります。

クラスがありません: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)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 o org.scalatestのorg.scalatest.tools.Runner $$ anonfun $ runOptionallyWithPassFailReporter $ 2.apply(Runner.scala:1005)のrg.scalatest.tools.Runner $$ anonfun $ runOptionallyWithPassFailReporter $ 2.apply(Runner.scala:1006) 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.jetbrains.plugins.scala.testingSupport.scalaTestのorg.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2(ScalaTestRunner.Java:144)のorg.scalatest.tools.Runner.run(Runner.scala) 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(DelegatingMethodAccessor 43)Java.lang.reflect.Method.invoke(Method.Java:606)at com.intellij.rt.execution.applic ation.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
    }
  }

}

なぜこのエラーが発生するのかについて、どんな助けもいただければ幸いです。

23
MCP

プロジェクトのビルドを実行します-別の問題に取り組みながら、キャッシュIDEA :)をクリアしたときに発生する可能性があった問題を解決するのに役立ちました

8
AlexPes

これは私が同じ例外を解決した方法です:

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

enter image description here

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

Scala SDKを設定する必要があります。1。)通常、intelliJは、エディターの右隅にメッセージを表示することで確認します。 https://www.jetbrains.com/help/idea/discover-intellij-idea-for-scala.html

4
AMS

Gatling を使用したときにこの問題に遭遇しました

I've replaced 'gatling-classes' to 'test-classes'

ファイルのgatling-classestest-classesに置き換えることで修正します->プロジェクト構造->モジュール->モジュール名->パス->テスト出力パス

4
Alex Elkin

私の場合、モジュールにScalaファセットがありませんでした。

https://blog.jetbrains.com/scala/2010/09/02/project-configuration-explained/

モジュールを適切に構成したら、エラーを取り除きました。

3
fglez

IntelliJを使用してscalatestを実行している場合は、クラスパスが正しいことを確認してください。例えば:

 /dummyApp 

build.sbtname := "dummyApp"のようになります。 name := "dummy App"という名前を付けると、エラーが発生します。

2
Ray Goodwin

この問題は、継承されたScalaプロジェクトを使用してIntelliJ IDEA 2018( Community Edition)。以下の手順は、それを修正するのに役立ちました:

  1. ファイル→プロジェクト構造→{特定のモジュールを選択}→「パス」タブ→「モジュールコンパイル出力パスを使用」を選択→「テスト出力パス」を変更test-classesフォルダーをポイントします。例えば:

    出力パス:/home/rustam/IdeaProjects/{project}/{module}/target/scala-2.12/classes
    テスト出力パス:/home/rustam/IdeaProjects/{project}/{module}/target/scala-2.12/test-classes

  2. IntelliJは、1つのファイルで定義された複数のScalaクラスが好きではないため、テストクラスの名前がテストファイルと同じであることを確認し、必要に応じて後でリファクタリングできる他のヘルパークラスをネストします。
2
Rustam Aliyev

私の場合、Preferences -> Build, Execution, Deployment -> sbtにありました

Use sbt Shell for build and importチェックボックスが有効

そして、テストは予期されたディレクトリsrc/testではなくsrc/it(統合テスト)にありました。

0
m3th0dman

私のプロジェクトには、@ Rustam Aliyevによって言及されたセットアップがすでにありました。それでも同じ例外が発生していました。プロジェクトの再構築も助けにはなりませんでした。かなり変です。 IDEを再起動すると問題が解決しました

0
Raj

テストクラスがパッケージの一部ではないときにエラーが発生しました。

0
Blitzkr1eg