1

我正在使用 visual-studio 内置的单元测试框架 -Microsoft.VisualStudio.TestTools.UnitTesting命名空间。

我需要从测试代码暂停单元测试的执行(并且,最好允许开发人员通过按下某个按钮或其他东西来恢复测试)。

有没有内置的方法可以做到这一点?

我知道我可以使用 aThread.Sleep()来简单地暂停几秒钟,但是有没有办法暂停/恢复或以某种方式提示用户?可能另一个明显的解决方案是调用MessageBox.Show(),但这需要引用整个 Windows.Forms 家族......

PS这背后的原因:我有一个“模糊”的集成测试,有时会失败,但我不知道为什么(这是一个通过自动化浏览器的UI测试,浏览Selenium器屏幕快速闪烁,我不知道是什么发生在那里......)。并且由于某种原因,我在调试测试时无法捕捉到这个失败,只有在定期运行它时......

更新:我想没有内置的方法可以做到这一点,这实际上是有道理的,因为测试应该在没有任何用户交互的情况下运行。猜猜,一个简单Sleep()甚至Console.ReadLine()简单的冻结执行,直到开发人员在测试资源管理器中单击“取消”。

4

1 回答 1

1

如果您知道代码中发生了该事件,即引发了异常,那么您可以等待调试器,直到它被附加。

                Console.WriteLine("Waiting for debugger to attach");
                 if(WeirdBehaviourOccurred)
                   while (!Debugger.IsAttached)
                   {
                      Thread.Sleep(100);
                   }
                Console.WriteLine("Debugger attached");
于 2017-03-21T16:49:17.157 回答