如何以编程方式暂停单元测试?
How do I programmatically pause a unittest?
我正在使用 visual-studio 内置单元测试框架 - Microsoft.VisualStudio.TestTools.UnitTesting
命名空间。
我需要从测试代码中暂停单元测试的执行(最好允许开发人员通过按某个按钮或其他东西来恢复测试)。
是否有任何内置方法可以做到这一点?
我知道我可以使用 Thread.Sleep()
简单地暂停几秒钟,但是有没有办法 pause/resume 或以某种方式提示用户?可能另一个明显的解决方案是调用 MessageBox.Show()
但这需要引用整个 Windows.Forms 系列...
P.S。这背后的原因:我有一个 "fuzzy" 集成测试 有时 会失败,但我不知道为什么(这是一个 UI 自动化浏览器的测试通过 Selenium
,浏览器屏幕快速闪烁,我不知道那里发生了什么......)。出于某种原因,我在调试测试时无法捕获此故障,只有在 运行 定期对其进行调试时...
更新:我想没有内置的方法可以做到这一点,而且它实际上是有道理的,因为测试应该 运行 没有任何用户交互 设计。猜猜,一个简单的 Sleep()
甚至 Console.ReadLine()
来简单地冻结执行,直到开发人员在测试浏览器中单击 "cancel"。
如果您知道代码中发生了该事件,即抛出了异常,那么您可以等待调试器,直到它被附加。
Console.WriteLine("Waiting for debugger to attach");
if(WeirdBehaviourOccurred)
while (!Debugger.IsAttached)
{
Thread.Sleep(100);
}
Console.WriteLine("Debugger attached");
我正在使用 visual-studio 内置单元测试框架 - Microsoft.VisualStudio.TestTools.UnitTesting
命名空间。
我需要从测试代码中暂停单元测试的执行(最好允许开发人员通过按某个按钮或其他东西来恢复测试)。
是否有任何内置方法可以做到这一点?
我知道我可以使用 Thread.Sleep()
简单地暂停几秒钟,但是有没有办法 pause/resume 或以某种方式提示用户?可能另一个明显的解决方案是调用 MessageBox.Show()
但这需要引用整个 Windows.Forms 系列...
P.S。这背后的原因:我有一个 "fuzzy" 集成测试 有时 会失败,但我不知道为什么(这是一个 UI 自动化浏览器的测试通过 Selenium
,浏览器屏幕快速闪烁,我不知道那里发生了什么......)。出于某种原因,我在调试测试时无法捕获此故障,只有在 运行 定期对其进行调试时...
更新:我想没有内置的方法可以做到这一点,而且它实际上是有道理的,因为测试应该 运行 没有任何用户交互 设计。猜猜,一个简单的 Sleep()
甚至 Console.ReadLine()
来简单地冻结执行,直到开发人员在测试浏览器中单击 "cancel"。
如果您知道代码中发生了该事件,即抛出了异常,那么您可以等待调试器,直到它被附加。
Console.WriteLine("Waiting for debugger to attach");
if(WeirdBehaviourOccurred)
while (!Debugger.IsAttached)
{
Thread.Sleep(100);
}
Console.WriteLine("Debugger attached");