8

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

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

事情是:我只在运行单元测试时遇到这个错误,这不是一个“例外”,只是测试没有运行,甚至没有开始。该程序在部署到 IIS 时运行良好,我可以手动调试单元测试并遍历它,它运行良好,所以我无法获得任何详细信息。

在我看来,我的程序集是第 3 方程序集,在运行测试时我的测试项目没有找到它。但是,每当我在 GAC 中加载这些程序集时,它都可以正常工作。

有谁知道可能导致此问题的原因以及我可以做些什么来解决它,以便我的单元测试将在没有此“错误”的情况下运行?

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

编辑:

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

编辑2:

一年后...当我遇到此错误时,我正在使用的环境早已不复存在。我什至不记得环境是如何设置的。我几乎可以肯定这与我设置 Visual Studio 的方式或与我的 GAC 的方式有关……谁知道呢。我怀疑这个问题是否会得到任何程度的最终答案,但无论如何,如果有人得到这个错误并解决了这个问题,请告诉我们!:)

4

2 回答 2

4

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

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

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

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

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

我还怀疑是[assembly: AssemblyCulture("")]因为失败的测试取决于文化,我假设测试运行者在没有文化的情况下运行。

于 2014-08-07T06:47:11.033 回答
0

我发现这是一个 ObjectDisposedException。我使用 Debugger.Launch() 在正确的时间附加了一个调试器。

于 2016-09-14T00:10:47.430 回答