簡體   English   中英

在monotouch / monodroid中使用模擬進行單元測試

[英]unit tests with mocks in monotouch/monodroid

我目前正在開發MonoTouch / MonoDroid上的應用程序,我想改進我的測試(使用xamarin工作室在Mac上工作)。 我知道如何編寫在模擬器上運行的集成測試(至少在iOS上使用iOS單元測試項目)。

我現在要做的是TTD,只有小的,僅模擬測試,測試一個指定的類(並且不在任何設備/模擬器中運行 - 僅限單元測試)。 我用Mockito在Java上做了這個,並嘗試在我的Moq 4.0單聲道解決方案上做同樣的事情。

為此,我不需要Mono,只需要普通的課程。 所以我嘗試創建一個新的N單元項目並將我的類鏈接到該項目中。 但是現在,為了獲得代碼編譯,我需要包含我在這些類中使用的所有引用(例如Xamarin.Mobile.Geolocator,RestSharp,Geo等),即使我以后仍然嘲笑它們。 當我這樣做時,代碼編譯,但是當我運行第一個測試時,有一個錯誤,說System.Core的版本xy不可用。 問題是有道理的,庫使用系統庫的特定單聲道版本,該版本在該測試項目中不可用。

我看到的唯一解決方案是避免這些引用,並為我在代碼中使用的所有庫類編寫空的Stub,只是為了使其編譯。 但這是很多無用的工作,我真的試圖避免。

所以簡而言之:有人可以幫助我使用xamarin mono進行測試優先開發的工作設置嗎? 我可以在哪里使用像Moq這樣的模擬框架,而不需要在模擬器上運行我的單元測試? 重要的是還有一些模擬第三方庫的解決方案(並使代碼在我的測試項目中編譯)。

我還沒有使用Xamarin 2中的新工具 - 我的許可證已過期,所以我仍然在VS中使用舊的Mono for Android。

測試優先方法肯定是對平台的挑戰。

最好的事情做,如果願意的移動專用庫與間接性分開是建立一個正常的類庫項目面向.NET框架中,添加你要測試的文件,並選擇添加鏈接選項。

您需要將域邏輯與特定於平台的邏輯完美地分離才能實現此功能,但您可以充分利用各種測試/模擬框架的功能。

另一種選擇是將跨平台元素分離為可移植類庫(PCL)並以相同方式進行測試。 PCL路線有一些優點和缺點 - 在這個答案中有更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM