我将一个解决方案从VS2008转换到了VS2010 SP1,并将单元测试项目更改为目标框架3.5。除了需要在单元测试项目中修复一些引用之外,一切都正常,解决方案成功构建。大多数测试都成功运行,但有几个失败了。失败的那些使用了私有访问器。就我个人而言,我宁愿删除这些测试,因为我认为它们并不必要,但只要它能揭示SP1中的潜在错误,我想看看是否有人能找出解决方法。
运行测试时收到的错误消息是“此程序集是由当前加载的运行时更新的运行时构建的,无法加载。”据我所知,似乎是私有访问器程序集是由4.0运行时构建的(最可能是通过Microsoft.VisualStudio.QualityTools.UnitTestFramework),但由于MSTest加载了3.5运行时,导致出现了错误。
我尝试更改对Microsoft.VisualStudio.QualityTools.UnitTestFramework的引用,以特别使用版本9.0(当前是10.1)。这会导致编译时错误,其中说私有访问器程序集使用了Microsoft.VisualStudio.QualityTools.UnitTestFramework 10.0版本,高于9.0版本。
我已经删除了生成的私有访问器程序集并重新创建了它,仍然存在同样的问题。当在单元测试项目中针对3.5框架时,似乎某些东西与VS2010 SP1不同步。
以下是其中一个单元测试的代码(再次强调,这不是非常有价值的测试,但这不是本帖的重点...):
运行测试时收到的错误消息是“此程序集是由当前加载的运行时更新的运行时构建的,无法加载。”据我所知,似乎是私有访问器程序集是由4.0运行时构建的(最可能是通过Microsoft.VisualStudio.QualityTools.UnitTestFramework),但由于MSTest加载了3.5运行时,导致出现了错误。
我尝试更改对Microsoft.VisualStudio.QualityTools.UnitTestFramework的引用,以特别使用版本9.0(当前是10.1)。这会导致编译时错误,其中说私有访问器程序集使用了Microsoft.VisualStudio.QualityTools.UnitTestFramework 10.0版本,高于9.0版本。
我已经删除了生成的私有访问器程序集并重新创建了它,仍然存在同样的问题。当在单元测试项目中针对3.5框架时,似乎某些东西与VS2010 SP1不同步。
以下是其中一个单元测试的代码(再次强调,这不是非常有价值的测试,但这不是本帖的重点...):
[TestMethod()]
public void GetNullableCharValue_DBNull_ReturnsNull_Test()
{
object value = DBNull.Value;
Nullable<char> expected = null;
Nullable<char> actual;
actual = RepositoryBase_Accessor.GetNullableCharValue(value);
Assert.AreEqual(expected, actual);
}