WinDbg';单元测试C#
本文关键字:单元测试 WinDbg | 更新日期: 2023-09-27 18:29:11
我的问题是什么我正试图使用WinDBG附加到我的一些单元测试,这些测试在类库(单元测试项目)中,但我无法让WinDBG破坏托管异常。
我为什么要这么做目前,我有使用垫片的测试,遇到了这个问题:UnitTestIsolationException:在发布/调试模式中运行垫片测试时抛出异常
然而,只有当这些测试与其他一些不使用垫片的测试同时运行时(测试资源管理器中的播放列表相同),才会发生这种情况。单独运行时,测试通过得很好。
所以,我想我会启动WinDbg(在我对它的了解非常有限的情况下),连接到测试运行程序,并打破那里的异常。
我尝试过的:由于这是一个DLL,它显然是由一些可执行文件加载的,以便在测试中运行代码(测试运行程序)。当我最初只是在Visual Studio中运行这些测试时,我也很难确定要附加WinDbg的进程,所以我开始使用vstest.console.exe开始运行测试,然后附加到它。
我能够很好地附加,并且WinDbg停止了测试运行程序的执行(耶!)。
现在,我想在抛出CLR异常(即我的UnitTestIsolationException)时立即中断。在谷歌上搜索后,我找到了windbg命令:sxe clr
然后我键入g
,程序再次开始运行我的测试。
我看到的行为:WinDbg从不中断UnitTestIsolationException-所有测试都运行到完成,测试结果打印到控制台,然后程序终止:
Passed [SomePassingTestName]
Passed [SomePassingTestName]
Failed [TheFailedTestMethodName]
Error Message:
Test method [TheFaileTestMethodName] threw exception:
Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationExceptio
n: Unexpected error returned by SetDetourProvider in profiler library 'C:'Progra
m Files (x86)'Microsoft Visual Studio 14.0'Common7'IDE'CommonExtensions'Microsof
t'IntelliTrace'14.0.0'Microsoft.IntelliTrace.Profiler.14.0.0.dll'.
我更喜欢psscor,但尝试
!StopOnException -derived -create System.Exception