[解決済み】Mockitoでモックからチェックされた例外を投げる
質問
あるメソッドが呼ばれたときに、モックオブジェクトの1つがチェック済みのExceptionを投げるようにしようとしています。次のように試しています。
@Test(expectedExceptions = SomeException.class)
public void throwCheckedException() {
List<String> list = mock(List.class);
when(list.get(0)).thenThrow(new SomeException());
String test = list.get(0);
}
public class SomeException extends Exception {
}
しかし、それでは次のようなエラーが発生します。
org.testng.TestException:
Expected exception com.testing.MockitoCheckedExceptions$SomeException but got org.mockito.exceptions.base.MockitoException:
Checked exception is invalid for this method!
Invalid: com.testing.MockitoCheckedExceptions$SomeException
を見てみると
Mockitoのドキュメント
のみを使用しています。
RuntimeException
Mockitoでモックオブジェクトからchecked Exceptionsを投げることはできないのでしょうか?
どのように解決するのですか?
のJava APIを確認してください。
リスト
.
は
get(int index)
メソッドだけが投げられると宣言されています。
IndexOutOfBoundException
を拡張する
RuntimeException
.
Mockitoに例外を投げるように指示しようとしています。
SomeException()
というのは
その特定のメソッド呼び出しによってスローされるのは妥当ではない
.
さらに明確にするために
は
リスト
インターフェースは、チェックされた Exception を
get(int index)
というメソッドがあり、それがMockitoが失敗する理由です。
を作成すると
モックされたリスト
の場合、Mockitoは
リストの定義
.class を使ってモックを作成します。
で指定している動作は
when(list.get(0)).thenThrow(new SomeException())
は、List API のメソッドシグネチャと一致しません。
というのも
get(int index)
メソッドは
SomeException()
ということで、Mockitoは失敗します。
どうしてもそうしたいのであれば、Mockitoに
new RuntimeException()
を投げるか、もっと良いのは
new ArrayIndexOutOfBoundsException()
なぜなら、APIはそれが投げられるべき唯一の有効なExceptionであることを指定しているからです。
関連
-
[解決済み] java.sql.SQLException: ユーザー 'root'@'localhost' (using password: YES) のためのアクセスが拒否されました。
-
[解決済み】デフォルトのキーストアファイルが存在しない?
-
[解決済み】Javaを包含するクラスではないのか?
-
[解決済み】Java LinkedListでNodesを使用する
-
[解決済み] Hide Utility Class Constructor : ユーティリティクラスはパブリックまたはデフォルトコンストラクタを持つべきではありません。
-
[解決済み】どういう意味か。Serializableクラスがstatic final serialVersionUIDフィールドを宣言していないとは?重複している] [重複している] [重複している] [重複している
-
[解決済み] 同じメソッドを同じ引数で複数回呼び出した状態でMockitoを使用する
-
[解決済み] Mockitoでvoidメソッドをモックする方法
-
[解決済み] Javaにおけるチェック済み例外とチェックされていない例外の理解
-
[解決済み] Mockitoで静的メソッドをモックする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】リンクリストの負の値の数でnegativeCntrを代入する
-
[解決済み】Android Studio クラス org.codehaus.groovy.runtime.InvokerHelper を初期化できませんでした。
-
[解決済み】代入の左手は必ず変数 CharAt
-
[解決済み】エラー。Selection does not contain a main type
-
[解決済み】popBackStack()とreplace()の操作はどう違うのですか?
-
[解決済み] java のクラス内のコンストラクタは、指定された型に適用できない
-
[解決済み】「java -cp」と「java -jar」の違い?
-
[解決済み] Hide Utility Class Constructor : ユーティリティクラスはパブリックまたはデフォルトコンストラクタを持つべきではありません。
-
[解決済み】Javaの".class expected "について
-
[解決済み】koch snowflake java recursion