如何使用 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 属性,因为我们只需要在调试单元测试时增加超时。

我们尝试使用不同的 testrunco​​nfig 文件设置:

<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 增加单元测试运行的全局超时的主要内容,如果未能解决你的问题,请参考以下文章

C# 创建一个简单的单元测试实例(MSTest框架)

如何在 Visual Studio 2008 中分析 MsTest 的单元测试?

有没有办法使用 MSTests 顺序运行单元测试?

使用 mstest,我可以针对我支持的每种语言运行我的单元测试套件吗?

多次重复 mstest 测试运行

VS2010 中的 MSTest - 如何一步启动所有负载测试