2016-05-03 11 views
11

私の元のコードはずっと多くなっていて、問題の真の原因から私を邪魔していました。 これは本質的な問題を捕らえます。簡単なテストを実行しているときにScalaTest DeferredAbortedSuiteエラーが発生しました。

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) 
    } 
} 

これは、これらのエラーを生成:

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

どこにでも私のコードで起こって何の配列アクセスはありません。どうしたの? 「最後のテスト:testOnly」を実行

は多くの助けではなかった。

混乱
[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) 

、私はそれがより良い任意の を善戦かどうかを確認するために、非非同期バージョンに後退しました。

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 
    } 

} 

それは、この異なるが、それでも不可解なエラーメッセージを生成:完全性については

[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 

、ここでは私のbuild.sbtの関連部分である:

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

これは、最終的でした些細な間違いがありましたが、私は他の誰かのためにこれを投稿したかったのです。

答えて

35

多くの読者がこのサンプルを読んでいる間におそらく気づいたように、問題は同じテスト記述をコピーして貼り付けたことでした。 これにより、コードはコンパイルできますが、実行時にエラーが発生して が原因を説明していないエラーが発生します。

私のところでは愚かなエラーですが、コンパイラーがより有用な方法で報告してくれればいいです。

+0

私のために働いた!この回答に合格とマークしてください。 –

関連する問題