当前位置: 首页 > 编程语言 > C#

AppDomain.UnhandledExceptionhandlerdoesnottriggerinunittest分享

时间:2023-04-10 13:45:03 C#

AppDomain.UnhandledExceptionhandlerdoesnottriggerinunittest下面的代码片段,为什么在单元测试抛出异常时,appendWillthehandler(AppDomain.CurrentDomain.UnhandledException事件)开始?我在VS2010上使用NUnit2.5.10和TestDriven.NET3.0。[TestFixture]publicclassMyTests{privatevoidCurrentDomain_UnhandledException(objectsender,UnhandledExceptionEventArgse){Console.WriteLine("Gotcha!");}[测试]publicvoidExceptionTest1(){AppDomain.CurrentDomain.UnhandledException+=CurrentDomain_UnhandledException;抛出新的异常(“ExceptionInTest”);}}输出:(没问题)------测试开始:程序集:WcfQueue.Test.dll------测试'xxxxx.Test.MyTests.ExceptionTest1'失败:System.异常:ExceptionInTestProgramTests.cs(83,0):在xxxxx.Test.MyTests.ExceptionTest1()0通过,1失败,0跳过,耗时1.98秒(NUnit2.5.5)。更新:这个问题的目的不是测试。Net框架或NUnit。我只是想找出为什么在单元测试中,处理程序没有触发。异常将渗透调用堆栈,直到到达可以处理异常的try/catch块、AppDomain边界或堆栈顶部(按优先级顺序)。如果您在NUnit提供的同一AppDomain中执行,NUnit将捕获您的异常。这会抢占可能调用您的事件的AppDomain边界内容。所以您的测试需要创建一个新的AppDomain并在那里执行它的代码(包括设置,它为AppDomain.UnhandledException添加一个事件处理程序)。一切都应该按预期工作。我想,事件没有被触发是因为异常被处理了。通过测试框架,生成报告。据我所知,未处理的异常事件仅在默认的AppDomain中触发。我认为NUnit使用不同的AppDomain来执行测试,这就是你的事件没有被触发的原因。以上是C#学习教程:AppDomain.UnhandledExceptionhandler不会触发单元测试中共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——本文来自网络收集,不代表立场,如涉及侵权,请右击联系管理员删除。如需转载请注明出处: