使用.NET/Mono在移動設備上進行單元測試

fmms 12年前發布 | 42K 次閱讀 .NET 單元測試

目前具體平臺的一個問題是缺乏單元測試的支持。開發者被迫在測試的質量和構建流程之間做出妥協,以便一切能夠工作起來。最近 MonoTouch 在這個方面取得了進展,但 Windows Phone 和 Mono for Android 仍然落后。

  Windows Phone 7 / Silverlight

  Windows Phone 7 的開發者可以通過兩個途徑進行測試。第一個是修改 Silverlight 單元測試框架,使之能夠運行在 Windows Phone 設備上。許多 Silverlight 開發者已經對此熟悉,這個單元測試框架本身還在“試驗階段”,修改需要支持大量測試。Jeff Wilcox 為 Silverlight 3 和 Windows Phone 7.0 的單元測試提供了一個修改。

  利處:提供的測試比其他選擇更加精確。

  弊處:不能包含到構建流程里,沒有 IDE 支持。(譯注:CodePlex 上有個 Windows Phone Essentials 的開源項目提供了 Visual Studio 測試項目模版,支持通過 NuGet 安裝,能和 Jeff Wilcox 修改的單元測試框架一起工作。)

   Christofer L?f采用了完全不同的途徑。他不是把一個測試框架放到 Windows Phone 里,而是把他要測的代碼拿出來。通過 Portable Library Tools 實現他的模型和視圖模型,他可以在標準的單元測試框架以及設備上運行相同的代碼。不幸的是,Portable Library 并不支持 ObservableCollection,需要使用“ListFactory”提供正確的類型。

  利處:可以包含到構建流程里,可以使用任何標準單元測試框架,支持 IDE 整合。

  弊處:Portable Library Tools 只提供有限的 API。

  第三個途徑是使用單獨的項目共享相同的源代碼。在理想情況下,代碼是一樣的,但可以通過預處理器指令處理大部分差異。如果你打算在 MonoTouch 和 Mono for Android 上共享相同的代碼,這種做法就很有意義了,因為它們需要分開構建。

  利處:可以包含到構建流程里,可以使用任何標準單元測試框架,支持 IDE 整合。

  弊處:構建時間更長,平臺之間的差異可能帶來問題。

  iOS / MonoTouch

  MonoTouch 最近有了一個在設備上執行的單元測試框架。和 Windows Phone 版本的不同,這個是官方支持的。Touch.Unit 框架本質上只是一個測試執行器,并為 MonoDevelop 提供了基本的 IDE 支持。它的核心是 NUnitLite,NUnit 框架的一個子集,專門為有限資源的設備量身定做的。

  利處:提供的測試比其他選擇更加精確。

  弊處:不能包含到構建流程里,沒有 IDE 支持。

  在 Touch.Unit 發布之前,開發者需要使用單獨的項目共享相同的源代碼,就像 Windows Phone 那樣。不過,在這里他們將會使用完整的 Mono 運行時和 NUnit 而不是微軟的相關平臺和技術。

  利處:可以包含到構建流程里,支持 IDE 整合。

  弊處:構建時間更長,平臺之間的差異可能帶來問題。

  Android / Mono for Android

  目前為 Mono for Android 項目做單元測試的唯一選擇是使用多個項目。Mono for Androidhi 阿不夠 MonoTouch 成熟,但最終我們應該可以看到一個類似的測試框架。

  查看英文原文:Unit Testing on Mobile Devices with .NET/Mono

來自: InfoQ
 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!