メソッドから特定の例外がスローされるかどうかを判断するために NUnit の Assert.Throws を使用したと断言できたかもしれませんが、私の記憶は以前に失敗しました。SO でこの投稿を読みましたが、正しい構文を知っているため、私の質問には答えませんでした。また、返される例外については何もしたくありません (例外のただし、これは後で役立つ可能性があります)。
Dictionary の使い方を理解していないことを証明するために単体テストを作成しましたが、スローされる KeyNotFoundException を処理できませんでした。NUnit がそれをキャッチしてテストに合格する代わりに、実行時に未処理の KeyNotFoundException エラーが発生します。スローされた .NET 例外で中断するように VS IDE が設定されていないことを確認しました。
私はこの2つの方法を試しました:
Assert.Throws( typeof(KeyNotFoundException), () => value = prefs["doesn't exist"]);
と
Assert.Throws<KeyNotFoundException>( () => value = prefs["doesn't exist"]);
ただし、どちらも未処理の例外が発生します。ここで何が欠けていますか?
更新は、他の人がこれを再現できないようです。スクリーンショットは次のとおりです。