[英]Test throwing exception, but ScalaTest/SBT still showing it as a passing test?
[英]Strange exception in SBT test
我遇到SBT(0.13.9版)問題。 我的一個ScalaTest測試無法通過EOFException
確定性失敗。
堆棧跟蹤:
Exception in thread "Thread-155" Exception in thread "Thread-159" java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2601)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1319)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
at sbt.React.react(ForkTests.scala:114)
at sbt.ForkTests$$anonfun$mainTestTask$1$Acceptor$2$.run(ForkTests.scala:74)
at java.lang.Thread.run(Thread.java:745)
java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2601)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1319)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
at org.scalatest.tools.Framework$ScalaTestRunner$Skeleton$1$React.react(Framework.scala:953)
at org.scalatest.tools.Framework$ScalaTestRunner$Skeleton$1.run(Framework.scala:942)
at java.lang.Thread.run(Thread.java:745)
sbt.ForkMain 59974 failed with exit code 134
我沒有看到任何JVM日志或線程轉儲。
SBT單線程或多線程測試會分叉JVM,並且如果主機名未解析,它將失敗並顯示此錯誤消息。 如果查看測試中的日志,可能會看到
運行測試時未捕獲的異常:java.net.ConnectException:操作超時
因此,解決此問題的簡單方法是將您的主機名添加到/ etc / hosts並將其映射到localhost,如下所示
:: 1本地主機blahblah
這樣可以解決問題。
幾乎可以肯定,這與某些Linux發行版中調用sbt.ForkMain
時Java類路徑太長有關。 為了避免這種情況,我添加了
javaOptions in Test ++= Seq("-Xms1G","-XX:+CMSClassUnloadingEnabled","-XX:+UseConcMarkSweepGC")
到build.sbt
文件。 我認為CMSClassUnloadingEnabled
是發生魔術的地方。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.