将.Net 3.5升级到.Net4:MSTEST单元测试失败,令人费解

时间:2015-04-17 12:14:15

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

我在迁移到VS2013 / .Net4.5之前将VS解决方案从.Net 3.5升级到.Net 4(VS2008 - VS2010)。然而,我的大多数单元测试现在都失败了。

所有测试类具有

的测试
private TestContext tci;

/// <summary>
///Gets or sets the test context which provides
///information about and functionality for the current test run.
///</summary>
public TestContext TestContext
{
    get
    {
        return tci;
    }
    set
    {
        tci = value;
    }
}

已定义(并且在VS2008环境中全部通过)现在在VS2010中失败并显示此错误:

  Failed    GetValueOrDefault_ValidType_ConvertsResult  Autoscribe.Utility.Test Unable to set TestContext property for the class Autoscribe.Utility.Test.ExtensionMethodsTest. Error: System.ArgumentException: Object of type 'Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestAdapterContext' cannot be converted to type 'Microsoft.VisualStudio.TestTools.UnitTesting.TestContext'..

我确保在VS2010中测试项目都参考了单元测试工具的正确版本,即

   C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v2.0\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

但这个错误让我感到困惑。

谁能告诉我有什么问题?看起来TestContext的性质已经改变了,但无论如何它都是样板代码所以我很困惑。

1 个答案:

答案 0 :(得分:0)

我通过删除对VS2010单元测试工具的所有引用来解决问题

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v2.0\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

并将其替换为对VS2012工具的引用

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

我也碰巧安装了。奇怪的是VS2012 dll应该解决这个问题,但它确实可以解决问题。