Search code examples
scalajunitscalatestspecs2scala-ide

Specs2 + JUnit + ScalaTest initializationError test class cannot be cast to org.scalatest.Suite


I'm following http://scala-ide.org/docs/current-user-doc/testingframeworks/index.html with libs:

  • "org.specs2" %% "specs2-core" % "2.3.11" % "test"
  • "org.scalatest" % "scalatest_2.10" % "2.1.7" % "test"
  • JUnit 4.11

test class:

import reactivemongo.bson._
import org.specs2.mutable._
import reactivemongo.bson.exceptions.DocumentKeyNotFound
import reactivemongo.bson.Macros.Annotations.Key
import org.specs2.runner._
import org.junit.runner._
import org.scalatest.junit._


@RunWith(classOf[JUnitRunner])
class MacrosSpec extends Specification  {
}

And I'm getting the initializationError

MacrosSpec
initializationError(MacrosSpec)
java.lang.ClassCastException: MacrosSpec cannot be cast to org.scalatest.Suite

    at org.scalatest.junit.JUnitRunner.<init>(JUnitRunner.scala:64)

    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)

    at java.lang.reflect.Constructor.newInstance(Unknown Source)

    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:29)

    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:21)

    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)

    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)

    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)

    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26)

    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:33)

    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)

    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48)

    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38)

    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)

    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)

    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)

    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

Environment


Solution

  • You need to import org.specs2.runner.JUnitRunner instead of org.scalatest.junit.JUnitRunner.