【问题标题】:How to avoid DisconnectedContext exception when debugging MSpec tests?调试 MSpec 测试时如何避免 DisconnectedContext 异常?
【发布时间】:2016-03-10 11:41:07
【问题描述】:
我在调试 MSpec 测试时收到 DisconnectedContext 错误,即使是在带有空测试的新项目中也是如此。消息说托管调试助手在
中发现了问题
C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 14.0\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\TESTWINDOW\te.processhost.managed.exe
在另一个解决方案中,我在调试时得到一个FileNotFoundException。
C:\USERS\ME\APPDATA\LOCAL\MICROSOFT\VISUALSTUDIO\14.0\EXTENSIONS\WGPFTPGA.WNV\Machine.VSTestAdapter.resources.dll
是 Visual Studio 突然损坏还是设置问题?我已经尝试重新安装 MSpec 测试适配器。
【问题讨论】:
标签:
c#
testing
visual-studio-2015
mspec
【解决方案1】:
这也发生在我身上。我的问题是我在尝试发出 sql 调用时遇到了 uncaugt 异常(一些微不足道的 sql 问题)。这向我表明,出于某种奇怪的原因,如果您有一个未捕获的异常在测试方法本身上方冒泡,您可能会得到这个。尝试{您在测试中尝试的所有内容} catch (Exception e) {Console.WriteLine(e)}
并且在 Console.. 线上有一个断点。
这解决了我的问题。
【解决方案2】:
我今天遇到了同样的错误。我试图在 VS2015 中将 log4net 添加到我的测试项目中。
我只是在<configuration> 下的app.config 中添加了<log4net> 部分(带有子节点appender、root、logger ...)。然后我得到了错误:
DisconnectedContext 发生
消息:托管调试助手“DisconnectedContext”在“C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 14.0\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\TESTWINDOW\te.processhost.managed.exe”中检测到问题。
附加信息:此 RuntimeCallableWrapper 转换到 COM 上下文 0x1301ae0 失败,并出现以下错误:调用的对象已与其客户端断开连接。 (来自 HRESULT 的异常:0x80010108 (RPC_E_DISCONNECTED))。这通常是因为创建此 RuntimeCallableWrapper 的 COM 上下文 0x1301ae0 已断开连接,或者它正忙于做其他事情。从当前 COM 上下文(COM 上下文 0x1301970)释放接口。这可能会导致损坏或数据丢失。为避免此问题,请确保所有 COM 上下文/单元/线程保持活动状态并且可用于上下文转换,直到应用程序完全使用 RuntimeCallableWrapper 完成,该 RuntimeCallableWrapper 表示存在于其中的 COM 组件。
此外,在 Debug 输出中,有一条关于 ConfigurationErrorsException 的有用消息:
------ Run test started ------
NUnit VS Adapter 2.0.0.0 executing tests is started
Loading tests from C:\....Tests.dll
Exception System.Configuration.ConfigurationErrorsException, Exception thrown executing tests in C:\....\Tests.dll
NUnit VS Adapter 2.0.0.0 executing tests is finished
========== Run test finished: 0 run (0:00:46.9507369) ==========
我意识到您还需要在<configSections> 中添加<section> 声明:
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
添加后,错误消失了。不确定这是否与您的错误有关,但它可能会有所帮助。