vstest.executionEngine.exe在TFS上进行了处理,但在我的本地VS2012上都可以



当我在TFS服务器上运行测试时,我会收到以下错误:

The active Test Run was aborted because the execution process exited unexpectedly. To investigate further, enable local crash dumps either at the machine level or for process vstest.executionengine.exe. Go to more details: [http://go.microsoft.com/fwlink/?linkid=232477]

当我在本地计算机上运行此测试时,我得到了"全部通过"结果。我不知道可能是什么原因,测试在TFS服务器上和本地运行的区别是什么?

我们在一个CI构建中遇到了相同的问题。原因是一个(或多个)测试正在启动单独的线程,而当在该线程中发生崩溃而不是在vstest的主线程中发生崩溃时。ExecutionEngine。该过程只是崩溃而没有其他信息。按照错误消息中建议的启用崩溃转储帮助我们本地化了有问题的模块。另一种方法是开始从构建定义中删除测试组件,以便我们仅运行单元测试的一部分,直到我们本地化有问题的测试为止。

本地环境和TFS之间的区别是与本地相比,构建服务器创建的不同文件夹结构,因此某些相对路径变得错误。正是在我们的情况下,我们缺少一些数据文件。我们俩都忘记了在构建定义的"源设置"路径中映射它们,而忘记了正确部署它们。

今天我们面临着同样的例外:

运行Visual Studio Test Runner用于测试源主动测试运行
由于执行过程意外退出而流产。
进一步调查,在机器上启用本地崩溃转储
级别或process vstest.executionEngine.exe。转到更多详细信息:
http://go.microsoft.com/fwlink/?linkid=232477测试运行完成。0
执行测试。测试运行失败。

所有单位测试案例均被中止。我们不知道为什么以及哪种测试案件导致崩溃。

我们遵循"收集用户模式转储"来配置TFS构建服务器以收集该问题的转储文件。

并使用debugdiag分析转储文件。最后,我们发现根本原因。

根本原因是一个单位测试案例调用以下方法和结果锁锁:

[[PRESTUBMETHODFRAME] (system.messaging.interop.safenativemethods.intmqpathnametoformatname)]] system.messaging.interop.safenativemethods.intmqpathnametoformatname(system.String, System.Text.StringBuilder,INT32BYREF) system.messaging.interop.safenativemethods.mqpathnametoformatname(system.String, System.Text.StringBuilder,INT32 BYREF) 1C system.messaging.messagequeue.resolve formatnamefromqueuepath(system.String, 布尔值) 154 system.messaging.messagequeue.exists(system.String) ea

确保您在构建服务器上安装了Visual Studio 2012。

相关内容