我有一个故意生成未处理异常的单元测试。我使用以下方法为未处理的异常(我想测试)连接了一个处理程序:
AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionHandler;
我的测试如下:
LogClient client = new LogClient(); // The handler is wired up in here
Trace.TraceInformation( "About to cause an unhandled divide-by-zero exception." );
for ( int i = 10; i > -10; --i )
{
int j = 100 / i;
Console.WriteLine( "i={0}, j={1}", i, j );
}
Assert.NotNull( client.UnhandledException );
当然,抛出异常并且NUnit捕获它并且未通过测试。我试过添加
[ExpectedException(typeof(DivideByZeroException))]
并且测试“通过”但我的处理程序从未被调用,Assert.NotNull
永远不会被执行。我想知道是否可以为未处理的异常处理程序编写单元测试。任何指针都赞赏。
我正在使用NUnit 2.5.7 w / VS 2010。
答案 0 :(得分:-1)
您没有测试处理程序,而是处理程序应该执行的条件。 Concider将Exceptionhandler提取到自己的类中,如:
internal class AnExceptionHandler
{
public static void UnhandledHandler(object sender, UnhandledExceptionEventArgs args)
{
//Do your thing and test this.
}
}
实例化此类,并将事件连接到此。
希望这会有所帮助。
此致 的Morten