使用 NUnit 对未处理的异常处理程序进行单元测试
我有一个单元测试故意生成未处理的异常。我已经使用以下方法连接了未处理异常的处理程序(我想测试它):
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 和 VS 2010。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您不是在测试处理程序,而是测试处理程序应执行操作的条件。考虑将异常处理程序提取到它自己的类中,例如:
实例化此类,并将事件连接到此类。
希望这有帮助。
问候,
莫滕
You are not testing the handler, but the condition in which the handler should act. Concider extracting the Exceptionhandler into its own class like:
Instantiate this class, and hook up the event up to this.
Hope this helps.
Regards,
Morten