如何使用 mstest 增加单元测试运行的全局超时
Posted
技术标签:
【中文标题】如何使用 mstest 增加单元测试运行的全局超时【英文标题】:How to increase global timeout of unit test run whith mstest 【发布时间】:2014-07-10 13:36:01 【问题描述】:我们有大量的单元测试,由于 Visual Studio 2008 的性能问题,我们通常使用 MsTest 从命令行运行测试。
当我们想要调试测试时,我们将 Visual Studio 附加到 VSTestHost 进程或从带有Debugger.Break()
的代码中调用调试器。问题在于,以这种方式调试单元测试时,测试会在五分钟后因超时而退出。我们在运行单元测试的时候有这个超时是可以的,但是在调试的时候我们发现它很烦人,因为我们在五分钟后就不能继续了。
我们不想使用 Timeout 属性,因为我们只需要在调试单元测试时增加超时。
我们尝试使用不同的 testrunconfig 文件设置:
<Timeouts runTimeout="2147483647" testTimeout="2147483647" />
但没有效果。
我们为 vstesthost.exe 启用了日志记录,我们在跟踪文件中发现以下几行:
vstesthost.exe:AgentObject:清理调用超时 30000
谁能告诉我们如何将参数传递给 vstesthost.exe,告诉我们测试运行所需的超时时间?
【问题讨论】:
我不确定这个链接是否有帮助,但是这篇文章讨论了设置超时msdn.microsoft.com/en-us/library/vstudio/ee256991.aspx @TGH 我已经查看了您建议的链接,但不幸的是它仅适用于从 2010 年开始的 Visual Studio 版本,我们仍在使用 Visual Studio 2008 【参考方案1】:在 VS2017 中,VSTesthost 是可配置的
vstest.console.exe MyTestAssembly.dll -- RunConfiguration.TestSessionTimeout=900000
设置运行测试的超时时间为 15 分钟(900 秒,以毫秒为单位)
您可能还需要通过 TimeOutAttribute 为特定测试设置超时(可以是无限的)。
【讨论】:
【参考方案2】:在跟踪文件中搜索超时消息后,我们发现了这个问题 (Cannot debug inside of ClassCleanup (timeout?)),其中一位 MSFT 员工回答说 Visual Studio 2008 中的测试代理的超时是不可配置的。所以看来唯一的办法就是更新我们的IDE。
【讨论】:
以上是关于如何使用 mstest 增加单元测试运行的全局超时的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio 2008 中分析 MsTest 的单元测试?