8

这是我在构建我的测试项目时得到的:

VS 11 单元测试意外错误

有了这个,我无法运行我的测试,因为它们没有被 VS 发现。

"Unexpected error detected. Check the Tests Output Pane for details."请参阅窗口底部的消息。现在,如果您查看“测试输出”窗格,您将不知道问题出在哪里。这非常有帮助... :)

我知道 VS 11 处于测试阶段,但它曾经可以工作......

我已经重新启动了 VS,但之后它也没有工作。

关于发生了什么的任何想法?它会是某个地方的错误吗?

注意:我唯一能想到的与我前一段时间所做的 VS 2010 卸载有关。也许它卸载了一些必要的位。打败我...

编辑 1
我刚刚对 VS 11 Beta Ultimate 进行了修复。它要求重新启动计算机一次,我做到了。然后它继续修复,但持续工作了12个多小时。我刚刚杀死了修复过程。

与此同时,我卸载了 Visual Studio 11 Express for Web。我将它与 VS 11 Beta Ultimate 放在一起。

够疯狂的是,在我做了这两件事之后它又开始工作了。所以我不确定是什么解决了这个问题:被杀死的修复过程或 VS 11 Express for Web 的卸载。

编辑 2
令我失望的是,我现在看到这是断断续续的事情。重新启动 VS 11 Ultimate Beta 后,问题仍然存在。:(

编辑 3
我在 Microsoft 填写了Connect 票,但他们将其关闭为不可复制。

我使用 VS 11 Ultimate Beta 修复选项进行了第二次尝试,这次它按预期完成。为了隔离问题,我在新解决方案中创建了一个带有默认UnitTest1.cs文件的全新测试项目,在构建它之后,我得到了与上图相同的错误屏幕。所以修复选项并没有解决问题。看起来我的系统中缺少某些东西。

这是来自 VS About 窗口的信息:

Microsoft Visual Studio 11
Version 11.0.50323.1 QRELB
Microsoft .NET Framework
Version 4.5.50131 QRELB

Installed Version: Ultimate

编辑 4我在这里
发现了一个类似的问题,但那里给出的解决方案不适用于我的情况,因为我没有描述的 DLL。

编辑 5
Aseem Bansal(微软员工)的帮助下,我终于得到了日志并看到了这个异常:

W, 2124, 19, 2012/04/19, 11:51:32.644, 53768626724, devenv.exe, Exception occured while initialization System.InvalidOperationException: Cannot start process because a file name has not been provided.
   at System.Diagnostics.Process.Start()
   at Microsoft.VisualStudio.TestPlatform.Core.Utilities.CommonUtilities.LaunchProcess(String exeFileName, String commandLineArguments, String workingDirectory, IDictionary`2 environmentVariables)
   at Microsoft.VisualStudio.TestPlatform.Client.TestRunnerServiceClient.SetupProcess(Boolean forceX86Discoverer)
   at Microsoft.VisualStudio.TestPlatform.Client.TestRunnerServiceClient.Initialize_NoLock(Boolean forceX86Discoverer)
   at Microsoft.VisualStudio.TestPlatform.Client.TestRunnerServiceClient.EnsureInitialized(Boolean forceX86Discoverer)
   at Microsoft.VisualStudio.TestPlatform.Client.TestRunnerServiceClient.EnsureInitialized_NoError(Boolean forceDiscoveryInX86Mode)

编辑 6
我尝试使用mstest.exe命令行工具(有和没有/noisolation选项)执行测试。测试按预期运行,如下所示。所以问题出在 VS 11 Beta 内部。

4

5 回答 5

3

莱尼尔,

感谢您提出这个问题。

正如我们在这里所讨论的,它表明卷影副本导致了问题。

请确保Microsoft.VisualStudio.TestPlatform.Core.dll从其安装位置%VSInstallDir%\Commmon7\IDE\CommonExtensions\Microsoft\TestWindow路径加载,而不是从%appData%\assembly\dl3\您现在观察的临时路径加载。这应该可以为您解决问题。

我还想告诉你,在最新的代码中,我们改进了我们的逻辑,并且通过改进的逻辑,从哪里加载二进制文件并不重要,它只会为你工作。

问候

阿西姆·班萨尔

于 2012-04-25T12:06:15.613 回答
3

找到相关性:

启用 NuGet 自动拉取功能后,在大约 15 次构建后,我在 VS 11 上遇到了这个问题。删除 Packages 文件夹并强制重新提取对构建更正的依赖项。

我还注意到,如果我手动清除解决方案根目录中的 obj/bin 文件夹,解决方案就会得到纠正。

因此,我认为这听起来像是测试套件没有使用当前解决方案配置更新缓存的 dll。在我们编辑时,dll 不同步,从而导致单元测试夹具无法启动。

希望这可以帮助。

于 2012-05-07T00:08:39.387 回答
1

我遇到了这个问题,我在@chrisortman 的评论中尝试了这个建议,它解决了我的问题。

他建议删除: %appdata%\assembly\dl3

虽然我在这里找到了它: %appdata%..\..\Local\dl3

我快疯了。真是疯了。

于 2012-07-26T21:07:56.613 回答
0

感谢 Leniel 和 Aseem Bansal 的帮助。

我有类似的问题,但这篇文章的解决方案对我没有帮助,我的 VS 2012 + Silk4net 没有在测试资源管理器中进行负载测试。

在我从我的 PC 中删除 Telerik Test Studio 之前。但是 VS 的扩展名没有被删除。删除此扩展后,我开始正常工作。谁看到问题仍然存在,请查看扩展可能是他们的问题。

希望这可以帮助。

于 2015-04-02T10:54:23.680 回答
0

还有一点:

Environment.ExitCode = 0;

需要在清理过程中添加到每个测试的末尾!我学会了这种艰难的方式。MS 单元测试框架会检查这一点,并且不会使用上一个测试中的非零 ExitCode 运行下一个测试!

这是一个非常好的线程,我在这个线程中解决了几乎所有的单元测试问题。

于 2015-04-29T21:14:12.637 回答