2016-07-20 11 views
1

Mockitoで例外がキャッチされたかどうかをテストするにはどうすればよいですか?例外がキャッチされたかどうかを確認する方法

例:

try{ 
    int a = 8/0; 
catch(ArithmeticException e){ 
    Logger.error(e.getMessage()); 
} 
+0

適切なパラメータでLogger.errorメソッドが呼び出されたことを確認できます。 – Set

+0

なぜあなたはMockitoを最初に関与させたいのですか? – kryger

答えて

3

私はあなたの問題はLogger.errorは()静的メソッドの呼び出しが実際にあるということだと思います。また、 "普通"のMokitoでは、静的メソッドへの呼び出しをモックできません。

このように、2つの選択肢があります

a)は、あなたがこのような呼び出しを模擬することが可能に... PowerMokitoになるかもしれません。 「この種の例外オブジェクトでLogger.error()を呼び出す必要があります」と指定するだけです。しかし、警告:PowerMockitoとその兄弟PowerMockは特定のコストで来る。多くの人にとって、彼らは解決するよりも多くの問題を作り出しています。個人的には、私は絶対にこのオプションをお勧めしません。

b)は、あなたが一歩、とのように、静的メソッドを使用しないように、あなたのデザインを変更できます。

class UnderTest { 
    SomeLogger logger ... coming into the class via dependency injection 

    void foo() { 
     try { ... whatever 
     } catch(WhateverException w) { 
     logger.error(w.... 

だから、今あなたがメソッドの呼び出しを扱っています。モックを作成して渡すことができます。

もちろん、これは、たとえばロギングコードを所有している場合にのみ機能します。そして、もちろん、それはたくさんの仕事かもしれません。しかし、長期的には、それは報われるでしょう。

最終的なアドバイス:videosを見て、 "テスト可能なコードを書く"が実際に何であるかを詳しく説明したいと思うかもしれません。

関連する問題