2016-11-18 12 views
1

まず、コード例を示します。私は、データパケットを扱う関数をテストする必要があります。このファンクションでは、データパケットがオープンされ、期待されるデータがすべて含まれていない場合は、InvalidParameterExeptionがスローされ、ログに記録されます。Junitで例外がキャッチされたかどうかのテスト

public void handleData(dataPacket) { 
    try { 
     analyseData(dataPacket); 
    } catch (InvalidParameterException e) { 
     e.printStackTrace() 
    } 
} 

すべてがうまくいくと私の例外は私の端末に表示されます。 これはどうすればテストできますか?私はこれを使用することはできません。(例外がキャッチされているため)

@Test(expected = InvalidParameterExeption.class) 
public void testIfFaultyDataPacketIsRecognised { 
    handleData(faultyDataPacket); 
} 

どのように私はInvalidParameterExeptionがスローされることをテストすることができますか?

+0

例外をキャッチすべきではありませんか、または@expectedアノテーションを削除して、資産になる他のものを見つけ出す必要があります。スタックトレースを印刷しても例外は非常にうまく処理されません。あなたが何をすべきか混乱しているという事実は、悪いデータパケットがあるときにクラスのクライアントがどのように感じるのか、そして何をすべきか分からないというヒントです。 – duffymo

+0

'handleData'の代わりに' analyseData'のテストを書く。 – Thiefster

答えて

3

あなたがスローされていないキャッチ例外を習慣-_- だけではなく、1

@Test(expected = InvalidParameterExeption.class) 
public void testIfFaultyDataPacketIsRecognised() { 
    analyseData(faultyDataPacket); 
} 
+0

私はすでにこのテストを受けていました。しかし、私は、あらゆるレベルのデータを送信してシステムをクラッシュさせることができるかどうか、より高いレベルの抽象化と検査をテストしていました。これらのテストは実際には二重チェックでしたが、必ずしも必要ではありません。 –

+0

** throwinsの例外メソッド**の意味は? –

0

「をキャッチ例外」の「投げる例外方法」をテストする理想的には、exception.Butをキャッチして再スローする必要がある場合あなたはそれをしたくないのですが、期待どおりテストケースで例外をキャッチしてみませんか?

@Test 
public void testIfFaultyDataPacketIsRecognised() { 
    try { 
     handleData(faultyDataPacket); 
     Assert.fail("Fail! Method was expected to throw an exception because faulty data packet was sent.") 
    } catch (InvalidParameterException e) { 
     // expected 
    } 
} 
関連する問題