我在Visual Studio 2010中使用MSTest,并且需要在所有测试运行后恢复我的数据库。如果AssemblyCleanup超时,如何导致测试运行错误?
我所做的是装饰与AssemblyCleanupAttribute属性的方法。
<AssemblyCleanupAttribute()>
Shared Sub AssemblyCleanup()
' Restore my databases which takes a long time...
End Sub
问题是清理需要花费合理的时间,以至于达到超时。
我开始意识到发生了超时的唯一原因是,在调试模式下输出窗口报告“... QTAgent32.exe,AgentObject:清理:超时在清理剂达到了。”因此,它非常安静地失败,如果MSTest报告测试运行错误,我会爱上它。
什么是检测和报告超时的最佳方式?我的理想解决方案是将超时报告为测试运行错误。
我到目前为止发现没有办法来检测超时。有一件事可以帮助其他人,如果你将清理代码作为清理脚本运行(在.testrunconfig中配置,并将测试项目设置为控制台应用程序并在Main方法中调用AssemblyCleanup),那么至少超时不会导致数据库损坏。做上述操作将启动一个不同的进程,因此无论测试运行是否由于超时而完成,它都将运行到完成。 – Llyle 2011-02-27 23:22:50