无法设置TestContext属性

25

我有一个 Visual Studio 2008 的单元测试,但我遇到以下运行时错误:

Unable to set TestContext property for the class JMPS.PlannerSuite.DataServices.MyUnitTest.  Error:  System.ArgumentException:  Object of type 'Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestAdapterContext' cannot be converted to type 'Microsoft.VisualStudio.TestTools.UnitTesting.TestContext'

我读到在将2005项目转换为2008时,VS 2008不能正确更新对UnitTestFramework的引用。我的单元测试是在2008中创建的,但它继承自VS 2005中构建的基类。这就是我的问题所在吗?我的基类是否必须在2008中重新构建?我不想这样做,因为它会影响其他项目。

在其他派生的2005单元测试中,我们只需要注释掉派生单元测试中的TestContext属性。我在VS 2008单元测试中尝试过这样做,但没有成功。我也尝试了“new” TestContext属性,但是得到了不同的运行时错误。

有什么想法吗?


我刚试图将基类转换为VS 2008,现在似乎可以工作了。但是,我宁愿不这样做,因为这将强制其他项目进行转换。所以如果有任何解决方法,那就太好了。 - bsh152s
我在VS2008中新建的一个测试类中遇到了相同的问题。 - jcollum
3个回答

26

当我升级一个较老的项目(我认为是2005年)时,在Visual Studio 2012中遇到了同样的问题。

需要通过在“解决方案资源管理器”中右键单击“Microsoft.VisualStudio.QualityTools.UnitTestFramework”的引用,然后删除它来删除它。

要添加正确的引用:

  1. 添加新引用
  2. 扩展,找到Microsoft.VisualStudio.QualityTools.UnitTestFramework,可能有几个
  3. 将鼠标移到上面以显示路径,选择../IDE/PublicAssemblies中的一个
  4. 清理
  5. 重新生成
  6. 重新运行测试

1
在我使用 VS 2010 时,这个方法也很有效。如果你不熟悉第3步中的路径,请注意是 Program Files/Visual Studio(你的版本,我的是10)/Common7/IDE/PublicAssemblies。 - Garrison Neely
上面的答案对我有用。如果你仍然在苦苦挣扎,请尝试:双击SmartDeviceTestRun.testrunConfig(在创建单元测试项目时创建)-> 主机->选择您的平台和设备。此外:右键单击测试项目->属性->设备->选择目标设备(测试项目目标设备应等于实际项目的目标设备)。 - robor
我有同样的问题,我的UTFramework引用路径为C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v2.0\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll适用于VS 2012。 - Random
工作得很好 :-) - Jony Adamit
请注意,现在您可能希望通过NuGet安装MSTest.TestAdapterMSTest.TestFramework,而不是使用框架引用。 - binki

2

我在这里发布希望能帮助到有人进行智能设备项目单元测试的内容。当我第一次尝试在Visual Studio 2008中运行智能设备项目中的方法的单元测试时,遇到了非常类似的错误:

Error: System.ArgumentException: Object of type 'Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestAdapterContext' cannot be converted to type 'Microsoft.VisualStudio.TestTools.UnitTesting.TestContext'

谷歌搜索该错误返回的结果表明,这可能是由于将测试项目从Visual Studio 2005格式升级到2008格式导致的,并且对UnitTestFramework.dll的引用仍为旧版本(8.0),需要进行更新。但这并不适用于我,因为我没有将测试项目从VS2005升级。所以我继续寻找。
在数小时的搜索中未能找到其他原因导致该错误后,我偶然发现了智能设备项目中的以下引用:
Microsoft.WindowsMobile.dll Microsoft.WindowsMobile.Status.dll
Visual Studio是从以下文件夹获取这些引用:
C:\Program Files\Windows Mobile 5.0 SDK R2\Managed Libraries

然而,智能设备项目的目标平台是Windows Mobile 6 Professional SDK。由于我不是最初创建智能设备项目的人,因此之前没有注意到这一点。所以我删除了对这两个DLL的引用,并从以下文件夹重新添加了它们:

C:\Program Files\Windows Mobile 6 SDK\Managed Libraries

重新构建智能设备项目后,运行测试方法成功。

0

我遇到了同样的问题。结果发现我的一个项目引用了 8.0 版本的程序集,而另一个项目引用了 9.0 版本的程序集。虽然解决方案编译通过了,但在运行时出现了异常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接