gpt4 book ai didi

c# - NUnit 辅助线程异常

转载 作者:太空狗 更新时间:2023-10-30 01:11:00 25 4
gpt4 key购买 nike

我正在测试启动辅助线程的代码。而且这个线程有时会抛出异常。我想编写一个测试,如果未正确处理该异常,该测试将失败。

我已经准备好那个测试,我在 NUnit 中看到的是:

LegacyImportWrapperTests.Import_ExceptionInImport_Ok : PassedSystem.ArgumentException: aaaaaaaaaa
at Import.Legacy.Tests.Stub.ImportStub.Import() in ImportStub.cs: line 51...

但是测试被标记为绿色。所以,NUnit 知道该异常,但为什么它将测试标记为已通过?

最佳答案

您可以在输出中看到异常详细信息并不一定意味着 NUnit 知道该异常。

我用过 AppDomain.UnhandledException在测试期间监视此类场景的事件(假设未处理异常,我假设这里就是这种情况):

bool exceptionWasThrown = false;
UnhandledExceptionEventHandler unhandledExceptionHandler = (s, e) =>
{
if (!exceptionWasThrown)
{
exceptionWasThrown = true;
}
};

AppDomain.CurrentDomain.UnhandledException += unhandledExceptionHandler;

// perform the test here, using whatever synchronization mechanisms needed
// to wait for threads to finish

// ...and detach the event handler
AppDomain.CurrentDomain.UnhandledException -= unhandledExceptionHandler;

// make assertions
Assert.IsFalse(exceptionWasThrown, "There was at least one unhandled exception");

如果您只想测试特定的异常,您可以在事件处理程序中执行此操作:

UnhandledExceptionEventHandler unhandledExceptionHandler = (s, e) =>
{
if (!exceptionWasThrown)
{
exceptionWasThrown = e.ExceptionObject.GetType() ==
typeof(PassedSystem.ArgumentException);
}
};

关于c# - NUnit 辅助线程异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3529917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com