2010-04-06 42 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),這變得非常複雜