c# – AppDomain.UnhandledException处理程序在单元测试中不会触发
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – AppDomain.UnhandledException处理程序在单元测试中不会触发,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1198字,纯文字阅读大概需要2分钟。
内容图文
![c# – AppDomain.UnhandledException处理程序在单元测试中不会触发](/upload/InfoBanner/zyjiaocheng/802/e802d6af83ca490b8cd21e4d94610aa5.jpg)
在下面的代码片段中,为什么在单元测试中抛出异常时,附加的处理程序(AppDomain.CurrentDomain.UnhandledException事件)是否会激活?
我在VS2010上使用NUnit 2.5.10和TestDriven.NET 3.0.
[TestFixture]
public class MyTests {
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) {
Console.WriteLine("Gotcha!");
}
[Test]
public void ExceptionTest1() {
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
throw new Exception("ExceptionInTest");
}
}
输出:(没有问题)
------ Test started: Assembly: WcfQueue.Test.dll ------
Test 'xxxxx.Test.MyTests.ExceptionTest1' failed: System.Exception : ExceptionInTest
ProgramTests.cs(83,0): at xxxxx.Test.MyTests.ExceptionTest1()
0 passed, 1 failed, 0 skipped, took 1.98 seconds (NUnit 2.5.5).
更新:此问题的目的不是测试.Net框架或NUnit.我只想找出原因,在单元测试中,处理程序不会触发.
解决方法:
异常将渗透调用堆栈,直到您到达可以处理该异常,AppDomain边界或堆栈顶部(按优先级顺序)的try / catch块.
如果您在NUnit提供的相同AppDomain中执行,NUnit将捕获您的异常.这会抢占AppDomain边界内容,这会调用您的事件.
因此,您的测试需要创建一个新的AppDomain并在那里执行其代码(包括设置,它为AppDomain.UnhandledException添加事件处理程序).一切都应该按预期工作.
内容总结
以上是互联网集市为您收集整理的c# – AppDomain.UnhandledException处理程序在单元测试中不会触发全部内容,希望文章能够帮你解决c# – AppDomain.UnhandledException处理程序在单元测试中不会触发所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。