Search code examples
playframeworksbtspecs2

scalaTest runner started instead of specs2 runner


I have a problem in my play project. In my build.sbt i add dependency

libraryDependencies += specs2 % Test

But when I try to run a test with some arguments, an error appears

testOnly SecondSpecification -- ex "test"

java.lang.IllegalArgumentException: Argument unrecognized by ScalaTest's Runner: ex
        at org.scalatest.tools.Runner$.parseArgs(Runner.scala:1414)
        at org.scalatest.tools.Framework.runner(Framework.scala:915)
        at sbt.Defaults$$anonfun$createTestRunners$1.apply(Defaults.scala:547)
        at sbt.Defaults$$anonfun$createTestRunners$1.apply(Defaults.scala:541)
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
        at scala.collection.immutable.Map$Map3.foreach(Map.scala:154)
        at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
        at scala.collection.AbstractTraversable.map(Traversable.scala:105)
        at sbt.Defaults$.createTestRunners(Defaults.scala:541)
        at sbt.Defaults$.allTestGroupsTask(Defaults.scala:561)
        at sbt.Defaults$$anonfun$inputTests0$1$$anonfun$apply$26.apply(Defaults.scala:530)
        at sbt.Defaults$$anonfun$inputTests0$1$$anonfun$apply$26.apply(Defaults.scala:521)
        at sbt.std.FullInstance$$anonfun$flattenFun$1$$anonfun$apply$4$$anonfun$apply$5.apply(TaskMacro.scala:61)
        at sbt.std.FullInstance$$anonfun$flattenFun$1$$anonfun$apply$4$$anonfun$apply$5.apply(TaskMacro.scala:61)
        at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
        at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
        at sbt.std.Transform$$anon$4.work(System.scala:63)
        at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
        at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
        at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
        at sbt.Execute.work(Execute.scala:237)
        at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
        at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
        at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
        at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

As you can see from the error - scalaTest runner started instead of specs2 runner, why?


Solution

  • When you try to run tests with sbt both specs2 and ScalaTest test runners are being invoked. And ScalaTest throws exceptions when there are unknown command line parameters.

    You can fix this with the following setting in build.sbt

    testFrameworks := Seq(TestFrameworks.Specs2)