我有一个文件列表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)
答案 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