Visual Studio 2008"随机"挂起测试运行
我们正在将VS 2008 Team System与自动化测试套件一起使用,并且在运行测试时,测试主机会"随机"锁定。实际上,我必须终止VSTestHost进程,然后重新运行测试以使某些事情发生,否则所有测试都处于"待定"状态。
有没有人遇到过类似的行为并知道解决方法?我们有3个开发人员在这里遇到相同的行为。
解决方案
回答
当我们说锁定时,我们是说VS实际上已挂起,还是测试未运行?
跟踪正在发生的事情的最简单方法是查看挂起的进程的转储。如果我们使用的是Vista,只需右键单击该进程,然后选择创建内存转储。如果我们使用的是Windows XP,并且没有安装Windows调试工具,则可以使用ntsd.exe进行内存转储。我们将需要进程ID,可以通过将" PID"列添加到"进程"选项卡显示中来从任务管理器中获取。
完成后,运行以下命令:
ntsd -p <PID> .dump C:\mydump.dmp
然后,我们可以使用WinDBG和SOS检查该转储,或者如果可以将转储发布到某个地方,我很乐意对其进行查看。
无论如何,我们可能希望间隔大约一分钟进行两次转储。这样,如果我们执行!runaway之类的操作,则可以看到哪些线程正在工作,这将有助于我们查找其挂起的原因。
我们在VS2008 SP1上还有另一个问题吗?
回答
我会尝试使用MSTest.exe从命令行运行测试。这可能有助于将问题隔离到Visual Studio,并且至少为我们提供一些成功运行测试的方法。
回答
除非计算机名称为大写,否则这可能与导致单元测试挂起的晦涩错误有关。疯狂,我知道,但是我遇到了这个问题,此修复程序对我有用。
MS Connect上的错误报告
MS Connect上的解决方法
TFS博客文章有关此问题
如何编辑注册表以更改计算机名称
最简单的方法是调整注册表。我们需要编辑两个键:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ActiveComputerName HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ComputerName
将两个名称中的ComputerName值都更改为大写,然后重新启动。测试然后神奇地工作。