2012-02-22 19 views
1

テスト対象メソッドに不正な引数が与えられた場合にExceptionがスローされることを保証するMSテストユニットテストがあります。VS2010デバッガで処理された例外が発生する

My actual; 
bool threw = false; 
try 
{ 
    actual = target.DoSomething(aBadParameter); 
} 
catch 
{ 
    threw = true; 
} 

Assert.IsTrue(threw); 

私は、ユーザー-未処理の(スローされない場合)場合にのみ、破るために設定されCLR例外を持っている:私は、パターンを使用しています。ただし、DoSomething()new Exception()をスローすると、デバッガがブレークします。再開すると、単体テストが正常に完了します。

ユニットテストコードをメインプログラムにカットアンドペーストして、メインプログラムのコンテキスト(MS Testではなく)で実行すると、デバッガはユーザが処理したExceptionでブレークしません。

ユーザが処理した例外でデバッガが壊れるのを防ぐにはどうすればよいですか?

その場合、例外は別のスレッドでスローされたコールバック内部CLRによって再スローされていたので、これは

Getting an Unhandled Exception in VS2010 debugger even though the exception IS handled

に関連する表面に表示されません。

答えて

2

MSTestを中にスローされた例外をテストするための慣用的な方法は、ExpectedException属性使用している:

[TestMethod] 
[ExpectedException(typeof(FooException))] 
public void ThrowsFooExceptionWithBadInput() 
{ 
    var actual = target.DoSomething(aBadParameter); 
} 
+0

を私はこのいずれかを入力しようとした1 –

+0

私はExpectedExceptionとまったく同じ動作を取得します。 http://stackoverflow.com/questions/2628965/expectedexception-on-testmethod-visual-studio-2010 –

+0

を参照してください。@Eric J:これは、あなたの質問の主な問題に対処できないかもしれないことに注意してください - 例外があってもデバッガが壊れます処理された。これが役に立ったら教えてください。それ以外の場合は削除されます。 – BrokenGlass

関連する問題