2011-02-08 8 views
11

Scalaユニットテスト(http://code.google.com/p/specs) を書くために仕様BDDライブラリを使用しています。もしClassNotFoundException例外をスローするとしたら、次のように書くことができます。コード:ScalaのスペシャルBDDライブラリの例外マッチャー

a must throwA[ClassNotFoundException] 

は、しかし、私は逆のケースをテストしたい、IEIは、型にClassNotFoundExceptionの例外をスローしない「」と主張したいです。

次のように私は、否定しませマッチャーを使用してみました:

a must throwA[ClassNotFoundException].not 

しかし、それdidntの仕事を。私はコンパイルエラーを取得しています。だから、ClassNotFoundException型の例外がスローされないと主張できる方法はありますか?

助けてください

は、それがあなたの問題に応答しない場合、あなたは例外がスローされないかどうかをテストする必要はありません

答えて

2

でもありがとうございました。この場合、意図した結果がOKであるかどうかを確認することをお勧めします。テストが実行されるとすぐに、例外がスローされないことを意味します。式はClassNotFoundException以外の何かをスローした場合

"An isSpaceNode function" should { 
    "not fail with a Group" in { 
     Group(<a/><b/>).isSpaceNode must not throwA(new UnsupportedOperationException) 
    } 
} 
2

ClassNotFoundExceptionを投げるのは、try-catchブロックを使用するだけではないのです:

try{ 
     ... 
    }catch{ 
     case m: ClassNotFoundException => fail("ClassNotFoundException") 
     case e => e.printStackTrace 
} 
2

以下の試験は、合格:

must throwA[Exception].like { 
    case m: ClassNotFoundException => false 
    case _ => true} 

あなたは、単に式はdoesnのことを確認するには、このようなものについてはどのように

17

コンパイルするときにはい解析問題があります:

a must throwA[ClassNotFoundException].not 

あなたが代わりに記述する必要があります。

a must not(throwA[ClassNotFoundException]) 
関連する問題