我创建了一个简单的单元测试:
[Timeout(1000)][TestMethod]
public void TestMethod1()
{
try
{
System.Threading.Thread.Sleep(2000);
}
finally
{
Console.WriteLine("Executed");
}
}
当我运行测试时,不执行finally块。但是当我调试它时,确实如此。为什么会这样?
答案 0 :(得分:4)
您指定测试超时为 1000 ms,而您的方法为 2000 ms。这会导致测试框架过早地强制关闭您的测试方法,因此它不会离开Sleep
调用,也没有时间到达finally
块。调试可能会禁用超时属性。
答案 1 :(得分:1)
Timeout属性不适用于调试会话。
答案 2 :(得分:1)
调试期间禁用超时,因此您可以看到Console.WriteLine()输出。
但我仍然认为最终会在vs2010中执行。如果您尝试显示一个消息框System.Windows.Forms.MessageBox.Show(“finally”),您应该可以看到它弹出。
在vs2010中超时后,Console.WriteLine输出会丢失。