예제 #1
0
        private static void ExceptionTest(VisualStudioApp app, string filename, string expectedTitle, string expectedDescription, string exceptionType, int expectedLine)
        {
            var debug3 = (Debugger3)app.Dte.Debugger;

            using (new DebuggingGeneralOptionsSetter(app.Dte, enableJustMyCode: true)) {
                OpenDebuggerProject(app, filename);

                var exceptionSettings = debug3.ExceptionGroups.Item("Python Exceptions");

                exceptionSettings.SetBreakWhenThrown(true, exceptionSettings.Item(exceptionType));

                app.Dte.ExecuteCommand("Debug.Start");
                WaitForMode(app, dbgDebugMode.dbgBreakMode);

                exceptionSettings.SetBreakWhenThrown(false, exceptionSettings.Item(exceptionType));
                exceptionSettings.SetBreakWhenThrown(true, exceptionSettings.Item(exceptionType));
                debug3.ExceptionGroups.ResetAll();

                var excepAdorner = app.WaitForExceptionAdornment();
                AutomationWrapper.DumpElement(excepAdorner.Element);

                Assert.AreEqual(expectedDescription, excepAdorner.Description.TrimEnd());
                Assert.AreEqual(expectedTitle, excepAdorner.Title.TrimEnd());

                Assert.AreEqual((uint)expectedLine, ((StackFrame2)debug3.CurrentThread.StackFrames.Item(1)).LineNumber);

                debug3.Go(WaitForBreakOrEnd: true);

                WaitForMode(app, dbgDebugMode.dbgDesignMode);
            }
        }