【发布时间】:2013-10-03 21:35:11
【问题描述】:
我们刚刚从 Visual Studio 2008“升级”到 Visual Studio 2012。我们更新了单元测试,现在它们在单独运行时通过了,但是当我尝试全部运行时,出现以下错误:
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.appcontainer.x86.exe. Go to more details: [http://go.microsoft.com/fwlink/?linkid=232477][1]
所以我去了link 并按照说明添加注册表项以启用本地故障转储。然后错误信息变为:
The active Test Run was aborted because the execution process exited unexpectedly. Check the execution process logs for more information.
If the logs are not enabled, then enable the logs and try again.
显然它注意到了我在注册表中为启用崩溃所做的更改。但是,当我查看 %LOCALAPPDATA%\CrashDumps 时,没有创建任何文件。
如果我一次运行一个测试(甚至一次运行几个测试),我可以让它们全部通过。问题仅在于 Run All。
有没有其他人遇到过类似的问题?如果有,你是怎么解决的?
在MSDN 上提出了基本相同的问题,但答案类似于“单击故障转储的链接”。该答案对我没有帮助,因为我没有看到任何指向故障转储的链接,并且我无法生成故障转储。
StackOverflow 上的This question 也类似,最终导致bug being logged on Microsoft Connect(由于某种原因看起来被推迟了),但我的问题可能不同,因为我的代码与“异步任务”无关(我不认为)。
编辑:问题似乎自行消失了,但问题可能是单元测试代码中未捕获的异常,正如下面的一些答案所暗示的那样。但是,我仍然很困惑为什么问题只出现在 Run All 中,而不是在运行较小的测试组或 Debug All 时出现。
【问题讨论】:
-
您是否能够运行测试子集并使其崩溃?如果没有看到您的代码,很难猜测可能导致问题的原因。
-
@MikeParkhill 是的,如果我将测试分成足够小的子集,它们都可以运行而不会崩溃。
-
我想要解决的是是否存在导致崩溃的特定子集。可能是一两个测试一起导致了问题。知道哪些可能会暴露问题。
-
奇怪的是,没有。好像没有模式。我跑了所有,它失败了。然后我可能跑了 50 次,但它失败了。然后我运行 25 并且它可以工作。然后接下来的25个工作呢!换句话说,我不能把它缩小到一个特定的测试或一组测试。如果我尝试越来越小的小组,每个测试最终都会通过。
-
自救..有趣的VS!
标签: unit-testing visual-studio-2012