当我在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]
当我在本地机器上运行此测试时,我得到了“All Passed”结果。我不知道原因是什么,测试在TFS服务器和本地运行之间有什么区别?
答案 0 :(得分:5)
我们在其中一个CI版本中遇到了同样的问题。原因是一个(或多个)测试开始单独的线程,当在这样的线程中发生崩溃而不是在vstest.executionengine的主线程中时,该过程只是在没有附加信息的情况下崩溃。根据错误消息中的建议启用故障转储帮助我们本地化有问题的模块。另一种方法是从构建定义中开始删除测试程序集,以便我们只运行部分单元测试,直到我们对有问题的测试进行本地化。
本地环境和TFS之间的区别在于构建服务器与本地服务器创建的文件夹结构不同,因此某些相对路径会出错。在我们的情况下,我们错过了一些数据文件。我们都忘了将它们映射到"来源设置"构建定义的路径,忘了正确部署它们。
答案 1 :(得分:1)
今天我们遇到了同样的例外:
为测试源运行Visual Studio测试运行器活动的测试运行
由于执行过程意外退出而被中止。为了
进一步调查,在机器上启用本地故障转储 级别或进程vstest.executionengine.exe。转到更多细节:
http://go.microsoft.com/fwlink/?linkid=232477测试运行已完成。 0
测试已执行。测试运行失败。
所有单元测试用例都已中止。我们不知道为什么以及哪个测试案例导致了崩溃。
我们已按照"Collecting User-Mode Dumps"配置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.ResolveFormatNameFromQueuePath(System.String, Boolean)+154 System.Messaging.MessageQueue.Exists(System.String)+ ea
答案 2 :(得分:-1)
确保在构建服务器上安装了Visual Studio 2012。