2011-04-19 52 views
4

是否有一些支持mono android應用程序的單元測試框架? 我已經試過默認的Visual Studio測試框架和NUnit框架,沒有任何運氣。
我最後一次嘗試:我創建了Mono Android類庫,引用了nunit.framework,寫了測試。但是,當我試圖發動他們我有例外:Mono Android。單元測試框架

System.TypeLoadException: Could not load type 'System.Runtime.Versioning.TargetFrameworkAttribute' from assembly 'mscorlib, Version=2.0.0.0' 

堆棧跟蹤:

Exception rethrown at [0]: 
    at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 
    at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) 
    at NUnit.Core.TestRunner.Load(TestPackage package) 
    at NUnit.Util.TestDomain.Load(TestPackage package) 
    at NUnit.Util.TestLoader.LoadTest(String testName) 

我敢肯定,這是因爲與其他組件單的Android組件不兼容...
所以我的問題:如何把它的工作?或者也許還有一些單聲道android應用程序的單元測試框架?

UPD:解決此問題的方法。
因爲我需要測試獨立於平臺的模型,所以我只創建了單獨的「代理」Windows類庫項目,並將其添加到我的Mono for Android類庫中的模型類的鏈接(Project => Add existing Item ... => [選擇所有應該添加爲鏈接的文件] =>添加爲鏈接)。
所以我收到任何單元測試框架組件的兼容性,它由應該測試的類組成。

回答

3

如果你找單下運行您的Visual Studio單元測試的Android,我寫了一個兼容層爲連同GUI。

檢查出來here

Tests Overview Tests Details

0

如果要從Mono for Android或MonoTouch或Silverlight應用程序中引用程序集,則必須使用也針對相同配置文件編譯的程序集。

這是2.0.5.0配置文件。

+0

是的。這就是爲什麼我們不能在Silverlight中使用標準.NET程序集的原因等等。我知道,由於引用程序集的版本不同,所以不可能將nunit和mono.android一起使用。所以我的問題:也許有人遇到同樣的問題並解決它。目前我正在嘗試使用mscorlib v 2.0.5.0重新編譯nunit,這可能會解決問題。它失敗了,我會在mac上使用mono。 – 2011-04-20 07:28:58

+0

最後發生了什麼? – NicoGranelli 2011-04-21 02:49:38

+0

@NicoGranelli:我成功解決了這個問題。我會盡快用接受的解決方案更新我的文章。 @jpobst:順便說一句,謝謝你在github上的一個非常棒的單聲道android例子。 – 2011-04-27 08:26:35

1

如果你正在尋找在設備上運行單元測試(或仿真器內部),那麼你應該看看Andr.Unit單爲Android測試亞軍NUnitLite(0.6)。它與Touch.Unit(iOS)類似(相同的UI和NUnitLite版本),即使它(當前)在功能(無網絡日誌記錄)方面稍微落後一點。

免責聲明:我寫的亞軍