5

我正在为我正在编写的一些代码(在 Visual Studio 2012 中)进行一套相当大的测试。在大多数情况下,运行单元测试没什么大不了的。但我还包括了许多具有更多外部基础架构依赖项的集成测试。测试的数量,加上重新设置测试之间的基础设施依赖关系,导致整个套件的测试运行相当长(目前大约 45 分钟)。

运行测试没什么大不了的。单元测试将在签入时运行,每晚进行集成测试。但是,在尝试分析所有测试的代码覆盖率时,我遇到了一个问题。没有创建代码覆盖结果,输出窗口显示以下内容:

发送到 net.pipe://megara/vstest.discoveryengine/14108 的此请求操作在配置的超时 (00:30:00) 内未收到回复。分配给此操作的时间可能是较长超时的一部分。这可能是因为服务仍在处理操作,或者因为服务无法发送回复消息。请考虑增加操作超时(通过将通道/代理转换为 IContextChannel 并设置 OperationTimeout 属性)并确保服务能够连接到客户端。

我不确定它会把我引向这里。我不使用任何iContextChannel东西,所有的测试运行都内置在 Visual Studio 中。所以我真的不知道在哪里/如何增加任何类型的超时。有人知道我应该去哪里看吗?

4

2 回答 2

7

.testsettings尝试更改解决方案文件中的超时值。

如果您没有,您可以使用right-click on solution -> Add New Item -> TestSettings菜单将其添加到解决方案中。在那里,您可以对单个测试进行超时(默认为 30 分钟),或为整个测试运行设置超时。

目前尚不清楚这是否是根本原因,但值得排除。

于 2012-07-18T01:17:05.250 回答
5

老话题,但也许有一些新信息:我没有运气尝试使用 Visual Studio 2015 在 .testsettings 文件中设置超时。无论我在测试设置中将其设置为什么,我的测试都会在 30 分钟后停止。

现在有一个[Timeout(milliseconds)]属性可以应用于各个测试方法。这甚至比 testsettings 更好,因为您可以微调单个测试以确保它们不会花费比预期更长的时间。

不幸的是,在使用 .testsettings 文件时尝试将其设置为高于 30 分钟时,即使 .testsettings 文件定义了更高的超时时间,我也无法让此属性产生任何影响。低于 30 分钟的值被接受,但更高的值仍然会在 30 分钟处停止,无论测试设置说什么。

删除 .testsettings 文件后,超时属性似乎按预期工作 - 测试将运行到我设置的任何超时。

如果您无法让 timeout 属性正常工作,请尝试删除 .testsettings。

于 2016-04-27T01:37:06.340 回答