MSTest异常:单元测试适配器抛出异常:成员未解析类型

时间:2010-06-21 13:42:31

标签: unit-testing msbuild mstest

在我的项目中,我使用Microsoft的单元测试框架编写测试。当我从Visual Studio运行它们时,我的所有测试都通过了,但是当我从MSBuild运行测试时,所有测试都失败并显示以下erorr消息:

  

单元测试适配器抛出异常:   成员未解析类型    SomeType SomeAssembly Version = assemblyVersion ,   Culture = neutral,PublicKeyToken = ..

未找到的程序集是所有项目引用的第三方程序集。

构建脚本由TFS使用,所以我给出了以下几行:

<RunTest>true</RunTest>

<ItemGroup>
    <MetaDataFile Include="$(BuildProjectFolderPath)myproject.vsmdi">
        <TestList>CI_Tests</TestList>
    </MetaDataFile>
</ItemGroup>

我发现this post显示了解决此问题的方法,但遗憾的是我无法更改TFS服务器上的文件。

帮助!

6 个答案:

答案 0 :(得分:9)

我在单元测试中遇到了同样的问题。上面链接的文章表明问题是VSTS导致在线程的CallContext中复制某些对象。

对于它的价值,在我的情况下问题是我在线程的CallContext中手动放置了一个对象,这导致了这个异常。我能够通过清除TestCleanup例程中的CallContext来解决这个问题。我没有必要在任何地方更改任何文件。

答案 1 :(得分:4)

我也遇到了同样的问题,但我在构造函数中为基础测试类执行了StructureMap初始化。

我能够通过将调用从构造函数移动到[TestInitialize]方法来解决问题。我还确保[TestCleanUp]方法处理了创建的StructureMap容器​​。在此MSBuild(2010)之后将运行测试而不会引发此错误。

答案 2 :(得分:3)

要检查的第一件事是将此程序集复制到msbuild运行测试的文件夹中。由于某些历史原因,您可能在bin / Debug文件夹中有副本,但在项目中未正确设置依赖项。

答案 3 :(得分:1)

发生此错误

Unit Test Adapter threw exception: 
Type is not resolved for member 'NHibernate.HibernateException,NHibernate

事实证明,问题出现在测试的静态构造函数中。 它与消息的外观完全无关,并且在使用BuildSchema创建数据库期间发生。

MSTest的非常无法提供的错误消息,这花费了我很多时间和压力。在我们的TODO列表中将迁移更像NUnit。

答案 4 :(得分:0)

This article通过此错误解决了我的问题:

  

回顾一下,MyCustomException是在测试执行的早期阶段抛出的。包含它的DLL还没有加载,所以Unit Test Adapter确实无法访问它。

答案 5 :(得分:0)

在测试了程序集的情况下,发生了加载标记为[可序列化]的类的实例的情况。解决方法是从MarshalByRefObject派生,以便不再从mstest主机尝试反序列化。