2016-05-03 17 views
11

Il mio codice originale ha avuto molto di più in corso, che mi ha distratto dalla vera causa del problema. Questo cattura il problema essenziale.Errore ScalaTest DeferredAbortedSuite durante l'esecuzione di test semplici.

import org.scalatest.AsyncFlatSpec 
import scala.concurrent.Future 

class AsyncFlatSpecSpec extends AsyncFlatSpec 
{ 
    it should "parse an XML file" in { 
    // ... Parsing ... 
    Future.successful(succeed) 
    } 

    it should "parse an XML file" in { 
    // ... Serializing ... 
    Future.successful(succeed) 
    } 
} 

Questo prodotto questi errori:

[info] DeferredAbortedSuite: 
[error] Uncaught exception when running AsyncFlatSpecSpec: java.lang.ArrayIndexOutOfBoundsException: 17 
[trace] Stack trace suppressed: run last test:testOnly for the full output. 

Non v'è alcun accesso agli array accadendo ovunque nel mio codice. Cosa sta succedendo?

Running "ultima prova: testOnly" non è stato di grande aiuto:

[info] DeferredAbortedSuite: 
[error] Uncaught exception when running AsyncFlatSpecSpec: java.lang.ArrayIndexOutOfBoundsException: 17 
sbt.ForkMain$ForkError: java.lang.ArrayIndexOutOfBoundsException: 17 
    at org.scalatest.exceptions.StackDepth$class.stackTraceElement(StackDepth.scala:63) 
    at org.scalatest.exceptions.StackDepth$class.failedCodeFileName(StackDepth.scala:77) 
    at org.scalatest.exceptions.StackDepthException.failedCodeFileName(StackDepthException.scala:36) 
    at org.scalatest.exceptions.StackDepth$class.failedCodeFileNameAndLineNumberString(StackDepth.scala:59) 
    at org.scalatest.exceptions.StackDepthException.failedCodeFileNameAndLineNumberString(StackDepthException.scala:36) 
    at org.scalatest.tools.StringReporter$.withPossibleLineNumber(StringReporter.scala:442) 
    at org.scalatest.tools.StringReporter$.stringsToPrintOnError(StringReporter.scala:916) 
    at org.scalatest.tools.StringReporter$.fragmentsForEvent(StringReporter.scala:747) 
    at org.scalatest.tools.Framework$SbtLogInfoReporter.apply(Framework.scala:622) 
    at org.scalatest.tools.FilterReporter.apply(FilterReporter.scala:41) 
    at org.scalatest.tools.SbtDispatchReporter$$anonfun$apply$1.apply(SbtDispatchReporter.scala:23) 
    at org.scalatest.tools.SbtDispatchReporter$$anonfun$apply$1.apply(SbtDispatchReporter.scala:23) 
    at scala.collection.Iterator$class.foreach(Iterator.scala:893) 
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1336) 
    at scala.collection.IterableLike$class.foreach(IterableLike.scala:72) 
    at scala.collection.AbstractIterable.foreach(Iterable.scala:54) 
    at org.scalatest.tools.SbtDispatchReporter.apply(SbtDispatchReporter.scala:23) 
    at org.scalatest.tools.Framework$SbtReporter.apply(Framework.scala:1119) 
    at org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:387) 
    at org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:506) 
    at sbt.ForkMain$Run$2.call(ForkMain.java:296) 
    at sbt.ForkMain$Run$2.call(ForkMain.java:286) 
    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) 

confuso, mi ritirai alla versione non-asincrona, per vedere se cavata qualsiasi meglio.

import org.scalatest.FlatSpec 
class FlatSpecSpec extends FlatSpec { 

    it should "parse an XML file" in { 
    // ... Parsing ... 
    succeed 
    } 

    it should "parse an XML file" in { 
    // ... Serializing ... 
    succeed 
    } 

} 

ha prodotto questo diverso, ma ancora criptico messaggio di errore:

[info] DeferredAbortedSuite: 
[info] Exception encountered when attempting to run a suite with class name: org.scalatest.DeferredAbortedSuite *** ABORTED *** (20 milliseconds) 
[info] Exception encountered when attempting to run a suite with class name: org.scalatest.DeferredAbortedSuite (AsyncFlatSpecSpec.scala:32) 
[info] ScalaTest 

Per completezza, qui i relativi porzioni della mia build.sbt:

scalaVersion := "2.11.8" 
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.0-M15" % "test" 
libraryDependencies += "org.scalactic" %% "scalactic" % "3.0.0-M15" 

Questo è stato in definitiva un errore banale da parte mia, ma volevo postarlo per il bene di qualcun altro a cercare su Google questi errori.

risposta

35

Come molti lettori probabilmente hanno notato durante l'analisi degli esempi, il problema era che avevo copiato/incollato la stessa descrizione del test. Ciò consente la compilazione del codice, ma non riuscirà in fase di esecuzione con errori che non identificano la descrizione come colpevole.

Errore stupido da parte mia, ma sarebbe bello se il compilatore lo segnalasse in un modo più utile.

+0

Ha funzionato anche per me! Segna questa risposta come accettata. –

Problemi correlati