2

ファイルのリストがあり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 件の失敗があります例外が発生しました

vultura.fastfactors.UAIParserTest$$anonfun$is$1$$anonfun$apply$1.apply(UAIParserTest.scala:24) で vultura.fastfactors.UAIParserTest$$anonfun$is$1$$anonfun$apply$1.apply(UAIParserTest.スカラ:24)

4

1 に答える 1

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
于 2013-10-16T13:17:20.780 に答える