3
我有一些测试,它们严重依赖于我无法修改的一些共享代码。这个共享代码有时会抛出一个异常,我希望能够处理这个异常的所有未被捕获的实例,而不用在try catch(这里有多年的测试)中包含对共享代码的每个调用。在C#单元测试中实现未处理的异常处理程序
我也希望能够重新抛出不属于我正在寻找的类型的异常。
我已经试过
public void init()
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
}
void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Logger.Info("Caught exception");
throw (Exception)e.ExceptionObject;
}
但现在看来,股市单元测试框架(Microsoft.VisualStudio.QualityTools.UnitTestsFramework
)是做一些与AppDomain
和阻止我更换其UnhandledException
处理或者我只是不明白怎么单元测试框架处理AppDomain
s(极有可能)。
任何人有任何建议吗?
如果第三方代码在测试期间抛出未处理的异常,那么当然应该允许该异常影响测试的结果。你为什么要处理这个异常? –
这些例外是在测试期间发生的吗?如果是这样,大多数单元测试框架会在它进入UnhandledException处理程序之前,将其作为运行测试(报告异常)的一部分来捕获异常。 –
@JohnSaunders,我明白,在大多数情况下,我不想处理这个异常,但是这些测试有一个非常复杂的设置步骤,原因可能在于设置。如果我能处理这个例外情况,那么我可以重新建立环境并挽救测试。我知道这是臭的,但它带有领土和它们的复杂性。 –