调用执行程序'executor:// mstestadapter / v1'时发生异常:未解析成员的类型

时间:2013-09-04 18:11:17

标签: .net unit-testing visual-studio-2012

我变得很奇怪,好吧,我甚至不称它为“错误”本身。只是每当我告诉Visual Studio 2012“运行所有”我的单元测试时(使用MS Test),我在输出窗口中得到这个奇怪的消息:

调用执行程序'executor:// mstestadapter / v1'时发生异常:成员'ASSEMBLY'的类型未解析

事情是:我只在运行单元测试时遇到此错误,并且它不是“异常”,只是测试没有运行,甚至没有启动。程序在部署到IIS时运行正常,我可以手动调试单元测试并遍历它,它工作正常,所以我无法获得任何类型的详细信息。

在我看来,在我的测试项目运行测试时,我的程序集是第三方程序集。每当我在GAC中加载这些程序集时,它都能正常工作。

有没有人知道可能导致这个问题的原因以及我可以做些什么来解决它,以便我的单元测试能够在没有这个'错误'的情况下运行?

这是一个WCF Web服务,通​​过他们自己的公开Web服务连接到第三方数据库,这是第三方程序集。

修改

根据融合日志,单元测试运行器(VSTestConfig)正在其自己的可执行文件夹中搜索那些特定的程序集,而不是像我期望的那样在bin \ debug文件夹中搜索。有没有其他人看过这个问题,即使程序集存在于bin \ debug中,它也不是在那里“搜索”它们?

编辑2:

一年后......当我收到此错误时,我正在使用的环境早已不复存在。我甚至不记得环境是如何设置的。我几乎肯定它与我使用Visual Studio设置的方式或与我的GAC的某些事情有关...谁知道。我怀疑这个问题是否会在任何程度上得到回答,但无论如何,如果有人得到这个错误并弄明白,请告诉我们! :)

2 个答案:

答案 0 :(得分:4)

我是我的情况,这是幕后的空引用。

你应该调查他抱怨的地方使用的类型。如果找到它,可以通过插入以下代码行来调试它:

Debugger.Attach();
Debugger.Break();

要修复它,您可以进行更好的测试设置或使用以下行跳过产生错误的代码。

var processName = Process.GetCurrentProcess().ProcessName;
if(processName == "vstest.executionengine.x86"){ /*Do something else*/  } 

我还怀疑是[assembly: AssemblyCulture("")],因为失败的测试取决于文化而我假设测试跑步者没有文化。

答案 1 :(得分:0)

我发现这是一个ObjectDisposedException。我使用Debugger.Launch()在适当的时候附加调试器。