如何在集合的所有元素上对Specs2测试失败获得有意义的消息?

时间:2013-10-14 12:35:47

标签: specs2

我有一个文件列表exampleProblems,我希望每个文件都应用一个方法并检查它是否会引发异常。问题是我没有从Specs2得到一个好的失败消息。我需要找出导致问题的因素。我已经尝试添加aka,但没有成功。

以下是代码:

def is: Fragments =
    "parse all example uai files" ! (exampleProblems must contain((p: String) => {
      Problem.parseUAIProblem(ClassLoader.getSystemResourceAsStream(p)).aka(p) must throwAn[Exception].not
    }).forall)

这是我得到的信息:

  

java.lang.Exception:有1次失败得到了异常   java.lang.IllegalArgumentException:要求失败:变量是   没有下令越来越多

     

在   vultura.fastfactors.UAIParserTest $$ anonfun $为$ 1 $$ anonfun $ $适用1.适用(UAIParserTest.scala:24)     在   vultura.fastfactors.UAIParserTest $$ anonfun $为$ 1 $$ anonfun $ $申请1.适用(UAIParserTest.scala:24)

1 个答案:

答案 0 :(得分:3)

这意味着在使用throwA[E]时,应该改进aka匹配器以显示可预期的描述。我会解决这个问题,但作为一种解决方法,你可以写:

class TestSpec extends Specification {  def is =
  "parse all example uai files" ! {
    Seq("a", "b") must contain { (p: String) =>
      s"$p is ok" ==> { { sys.error("bang"); p} must not (throwAn[Exception]) }
    }.forall
  }
}

显示:

[info] x parse all example uai files
[error]  There is 1 failure
[error]  a is not ok because Got the exception java.lang.RuntimeException: bang