列挙型を別の列挙型にマップする既存のメソッドの単体テストを作成する必要がありました。この単体テストは、マッピングがメソッドで定義されておらず、switch ステートメントのデフォルト ブロックで例外が発生した場合のシナリオに関係しています。
enum players{sachin, ponting, mculum, gayle}
enum teams{westindies, australia, india, newzealand, southafrica}
public teams MappingMethod(players p)
{
switch(p)
{
case sachin: return india;
case gayle: return westindies;
......
default: throw new ArgumentOutOfRangeException();
}
}
ExpectedException 属性を使用して単体テストを試みたところ、上記のシナリオでは単体テストは正常に機能しました。ただし、列挙内のすべての項目にマッピングが存在する場合は失敗します。
これを解決するために、単体テスト内で try..catch ブロックを使用し、ExpectedException 属性を使用する代わりに Assert.IsInstanceOfType を使用して例外をチェックしました。
この単体テストを行うための他の良い方法はありますか?