1

有人能告诉我“片段评估错误”是什么意思,或者我可以在哪里寻找解决方案吗?我有时(但并非总是)得到很多这些错误(不改变我的代码):

[error] ! Fragment evaluation error
[error]     ThrowableException: Could not initialize class code.model.Post$  (FutureTask.java:138)
[error] code.model.PostSpec$$anonfun$1$$anonfun$apply$1.apply$mcZ$sp(PostSpec.scala:68)
[error] code.model.PostSpec$$anonfun$1$$anonfun$apply$1.apply(PostSpec.scala:51)
[error] code.model.PostSpec$$anonfun$1$$anonfun$apply$1.apply(PostSpec.scala:51)

PostSpec 的第 68 行是 (specs2) 测试中引用 Post 模型伴随对象的第一行:

val test4 = Post.fixJValue(toextract4).extract[Selection]

我正在使用 Scala 2.9.0-1。

另外:我不知道这是否重要,但 Post 是 net.liftweb.mongodb.record.MongoRecord 类伴生对象:

object Post extends Post with MongoMetaRecord[Post] { ... }
4

1 回答 1

2

在 specs2 规范中,Fragments是规范的一部分。AFragment可以是一个Text、一个Example、一个Step

一些片段,比如ExampleStep是要执行的,并且应该捕获异常,以便将它们标记为失败。但他们不会捕捉到Errors(除了AssertionErrors)。因此,如果 Example 抛出OutOfMemoryError,这将被报告为 Fragment 评估错误。

其他片段,如Text片段在被评估时不应该抛出异常。如果他们这样做,您将收到相同的Fragment evaluation error消息。

如果没有看到完整的规范,我很难说出那里发生了什么,但我怀疑你在Example. 但我现在的问题多于答案:

  • 在哪里test4声明?在规范主体内?在一个Context案例类里面?
  • 由于错误是间歇性发生的,你确定你总是有一个正确的 mongodb 上下文吗?也许您的规范示例正在同一个 mongo db 实例上同时执行?
于 2011-09-14T23:02:30.007 回答