如何以编程方式暂停单元测试?

时间:2017-03-21 12:00:04

标签: c# visual-studio unit-testing visual-studio-test-runner

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

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

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

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

P.S。这背后的原因是:我有一个"模糊" 有时失败的集成测试,但我无法确切说明原因(它是通过Selenium自动化浏览器的UI测试,浏览器屏幕快速闪烁,我不能告诉那里发生了什么......)。由于某种原因,我无法在调试测试时发现这种失败,只有在经常运行时...

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

1 个答案:

答案 0 :(得分:1)

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

                Console.WriteLine("Waiting for debugger to attach");
                 if(WeirdBehaviourOccurred)
                   while (!Debugger.IsAttached)
                   {
                      Thread.Sleep(100);
                   }
                Console.WriteLine("Debugger attached");