2012-02-22 85 views
1

我有MS Test单元测试,确保在测试方法给出错误参数时引发Exception。我正在使用的模式:VS2010调试器破坏处理异常

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

Assert.IsTrue(threw); 

我有CLR异常设置为只有当用户未处理(不是当抛出)时打破。但是,当DoSomething()引发new Exception()时,调试器会中断。如果我继续,单元测试成功完成。

如果我将单元测试代码剪切并粘贴到主程序中并在主程序的上下文中运行(而不是在MS Test下),则调试程序不会在用户处理的异常中断。

如何防止调试器破坏用户处理的异常?

这并不因为在这种情况下,有关

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

表面上出现异常被抛出在不同的线程,并正在由一个回调里面的CLR重新抛出。

回答

2

的惯用方法来测试在MSTest中抛出的异常使用ExpectedException属性:

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

我正要键入这一个在+1 – 2012-02-22 22:31:28

+0

我得到完全用的ExpectedException相同的行为。请参阅http://stackoverflow.com/questions/2628965/expectedexception-on-testmethod-visual-studio-2010 – 2012-02-22 22:34:57

+0

@Eric J:刚注意到这可能没有解决您的问题中的主要问题 - 即使异常是处理。让我知道这是否有帮助,否则将删除。 – BrokenGlass 2012-02-22 22:35:48