如果AssemblyCleanup超​​时,如何导致测试运行错误?

时间:2011-02-22 23:15:16

标签: visual-studio-2010 mstest

我在Visual Studio 2010中使用MSTest,并且需要在所有测试运行后恢复我的数据库。

我所做的是使用AssemblyCleanupAttribute属性修饰方法。

<AssemblyCleanupAttribute()>
Shared Sub AssemblyCleanup()
    ' Restore my databases which takes a long time...
End Sub

问题是清理需要花费合理的时间,以至于达到超时。

我开始意识到发生超时的唯一原因是在调试模式下,“输出”窗口报告“... QTAgent32.exe,AgentObject:清理:清理代理时达到了超时”。因此它非常安静地失败,如果MSTest报告测试运行错误,我会很高兴。

检测和报告超时的最佳方法是什么?我理想的解决方案是将超时报告为测试运行错误。

2 个答案:

答案 0 :(得分:2)

简而言之,如果AssemblyCleanup超​​时,则无法导致MSTest报告错误。

如果您遇到此问题,那么此时您需要考虑MSTest的这种限制对您来说是否太大了。还有其他的,更好的测试框架。

如果您决定坚持使用MSTest,并且只想确保(至少)AssemblyCleanup中的代码/脚本运行完成,那么您可以选择将清理代码作为进程运行。这样,即使AssemblyCleanup在内部调用Thread.Abort,您的Process也会运行完成。虽然这很麻烦......

答案 1 :(得分:0)

为什么不在事务中包装每个测试的内容,并在测试结束时回滚事务?有关详细信息,请参阅此处:http://msdn.microsoft.com/en-us/library/bb381703(v=vs.80).aspx#dtbunttsttedp_topic7