OutOfMemoryErrorでなくても、stacktraceにObjectOutputStreamがどうとか、java.net.SocketException: Socket closedとか、見慣れないよくわからないstacktrace出る場合もあります。かつ、テストが途中で止まっても、最終的な結果はsuccessと表示される場合もあります。
Play2.1からテストがforkされたJVM上で行われるようになったけど、これ URL が、Play側で設定されてないから簡単にメモリ不足でテストが死ぬ。のでこれ URL と同じようなことしないといけない
2013-02-05 15:18:24 via web
簡単に解説しておくと、Play2.1から*2最近sbtに入った
「完全に裏で別のJVMを立ちあげて、ObjectInputStreamやObjectOutputStream、Socketを使用して、テスト用に立ち上げたJVMと通信をする」
という、とても凝った仕組みを使っているからです。おそらく、シリアライズやScalaのversion間の互換性問題がでないようにするため(?)、一部そのあたりがJavaで実装されてます。以下のあたりとか
https://github.com/sbt/sbt/blob/v0.12.2/testing/agent/src/main/java/sbt/ForkMain.java
https://github.com/sbt/sbt/blob/v0.12.2/testing/agent/src/main/java/sbt/ForkTags.java
裏で起動したテスト用のJVMがメモリ不足に陥り、どうしようもない状態になり、通信しているメインのsbtを起動したJVMが、その状態を判断できない(お前OutOfMemoryになったの?っていう判断がうまくできない(?) )ので、よくわからないエラーになるようです