2010-04-06 58 views
2

当我有需要的System.Xml或System.Xml.Linq的命名空间一个单元测试,我得到以下错误,当运行测试:问题在MonoDevelop中(MonoTouch的)单元测试使用的System.Xml

System.IO.FileNotFoundException:找不到能 不加载文件或组件 'System.Xml.Linq的,版本= 2.0.5.0, 文化=中性 公钥= 31bf3856ad364e35' 其依赖的或 之一。

事情我已经验证:

  • 我在测试中正确usings。
  • 该项目建设没有问题。
  • 当我在模拟器中运行应用程序时,使用这些名称空间可以正常工作。
  • 我已经写了一个非常简单的单元测试来证明单元测试在所有(和它)中都可行。

我是一个测试驱动有点人,所以我迫不及待地想要得到这个工作,所以我可以用我的应用程序进步。

在此先感谢。

回答

2

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

这些在/ Developer/MonoTouch的/ usr/lib目录/单中找到// ...

例如,我需要使用的System.Xml,所以我编辑我的测试项目的引用,并添加以下组件:

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

有一个System.Xml.Linq的为好,这些都是你需要的版本是否正确(2.0.5.0)

+0

我按照我在非测试项目中所做的方式添加引用。你是说这些程序集是不同的,并且是NUnit项目所必需的?我今晚会试试这个... – 2010-04-06 21:03:29

+0

这样做!谢谢Leuk。看起来MonoDevelop会为我处理这个问题。我想我只需要更好地理解Mono和MonoTouch之间的差异。 – 2010-04-07 00:37:33

0

大概是单声道在它看起来没有找到所需的库。 NUnit在默认情况下会尝试将您的测试库复制到其他地方,因此它不会找到全局不可见的库(安装在GAC中的系统库)。不确定您是否可以在Monodevelop中设置NUnit的选项,以便不要复制被测库以避免该问题。 一种可能性是运行独立的NUnit控制台运行程序,在其中设置选项或向NUnit提供更多信息以使其复制更多的内容,但由于必须使NUnit使用正确的配置文件(基于Silverlight的Monotouch),这变得非常复杂