17

我们正在使用带有自动化测试套件的 VS 2008 Team System,并且在运行测试时,测试主机“随机”锁定。我实际上必须终止 VSTestHost 进程并重新运行测试以使某些事情发生,否则所有测试都处于“待定”状态。

有没有人遇到过类似的行为并知道解决方法?我们这里有 3 名开发人员遇到相同的行为。

4

3 回答 3

4

这可能与导致单元测试挂起的模糊错误有关,除非计算机名称为大写。疯了,我知道 - 但我遇到了这个问题,修复对我有用。

有关此问题的MS Connect
解决方法的错误报告MS Connect
TFS 博客文章如何编辑注册表以更改您的计算机名称

最简单的方法是调整注册表。您需要编辑两个键:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ActiveComputerName
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ComputerName

将两个键中的值 ComputerName 更改为大写,然后重新启动。然后测试神奇地起作用。

于 2009-05-20T14:45:04.667 回答
2

I would try running the tests from the command line using MSTest.exe. This might help isolate the problem to Visual Studio, and at least give you some method of running the tests successfully.

于 2008-09-09T01:54:03.410 回答
2

当您说锁定时,您的意思是 VS 实际上已挂起,还是测试没有运行?

追踪正在发生的事情的最简单方法是查看挂起进程的转储。如果您使用的是 Vista,只需右键单击该进程并选择创建内存转储。如果您使用的是 Windows XP,并且没有安装适用于 Windows 的调试工具,则可以使用 ntsd.exe 获取内存转储。您将需要进程 ID,您可以通过将 PID 列添加到“进程”选项卡显示来从任务管理器中获取该 ID。

完成后,运行以下命令:

ntsd -p <PID>
.dump C:\mydump.dmp

然后,您可以使用WinDBG 和 SOS检查该转储,或者如果您可以将转储发布到某个地方,我很乐意查看它。

在任何情况下,您都可能希望每隔一分钟左右进行两次转储。这样,如果您执行 !runaway 之类的操作,您可以查看哪些线程正在工作,这将帮助您找出它挂起的原因。

另一个问题 - 你在 VS2008 SP1 上吗?

于 2008-09-09T01:10:12.423 回答