在MonoDevelop(MonoTouch)的单元测试中使用System.Xml的问题

时间:2010-04-06 12:01:20

标签: mono nunit xamarin.ios monodevelop

当我进行需要System.Xml或System.Xml.Linq命名空间的单元测试时,运行测试时出现以下错误:

  

System.IO.FileNotFoundException:可以   不加载文件或程序集   'System.Xml.Linq,版本= 2.0.5.0,   文化=中性,   PublicKeyToken = 31bf3856ad364e35'或   其中一个依赖。

我已经验证的事情:

  • 我在测试中有正确的用法。
  • 项目构建没有问题。
  • 当我在模拟器中运行应用程序时,使用这些名称空间可以正常工作。
  • 我写了一个非常简单的单元测试,以证明单元测试完全有效(并且确实如此)。

我是一个受测试驱动的人,所以我迫不及待地想让这个工作变得有效,所以我可以继续使用我的应用程序。

提前致谢。

2 个答案:

答案 0 :(得分:2)

您需要添加monotouch在单元测试项目的引用中使用的相同dll(程序集)。

可在/ Developer / MonoTouch / usr / lib / mono //...

中找到

例如,我需要使用System.Xml,因此我编辑了测试项目的引用并添加了以下程序集:

/Developer/MonoTouch/user/lib/mono/2.1/System.Xml.dll

还有一个用于system.xml.linq,这些是你需要的正确版本(2.0.5.0)

答案 1 :(得分:0)

可能Mono没有在它看起来的地方找到所需的库。默认情况下,NUnit会尝试将测试库复制到其他位置,因此找不到全局可见的库(GAC中安装的那些系统库)。不确定是否可以在Monodevelop中设置NUnit的选项,不要复制被测试的库以避免问题。 一种可能性是运行独立的NUnit Console运行器,您可以在其中设置选项或为NUnit提供更多信息以使其复制更多内容,但由于必须使NUnit使用正确的配置文件(Monotouch基于Silverlight),这很复杂。 p>