Mono Android. Unit test framework [closed]

2019-04-10 02:01发布

问题:

Are there some unit test frameworks which supports mono android applications? I already tried default Visual Studio test framework and NUnit framework without any luck.
My last try: I created Mono Android class library, referenced nunit.framework, wrote tests. But when I tried to launch them I've got exception:

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

Stack Trace:

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)

I'm sure that it's because of incompatibility of mono android assemblies with other assemblies...
So my question: How to put it to work? Or maybe there are some other unit tests frameworks for mono android applications?

UPD: Workaround for this issue.
Since I needed to test the platform independent models only I just created separate "proxy" Windows Class Library project and added to it links to model classes from my Mono for Android Class Library (Project => Add existing Item... => [select all files which should be added as links] => Add As Link).
So I received compatible with any Unit test framework assembly which consists of classes which should be tested.

回答1:

If you're look for running your Visual Studio Unit Tests under Mono for Android, I've written a compatibility layer for that together with a GUI.

Check it out here



回答2:

If you're looking to run your unit tests on devices (or inside the emulator) then you should have a look at Andr.Unit Mono for Android test runner for NUnitLite (0.6). It's similar (same UI and NUnitLite version) to Touch.Unit (iOS) even if it (currently) is a bit behind in terms of features (no network logging).

Disclaimer: I wrote the runner



回答3:

If you want to reference assemblies from a Mono for Android or MonoTouch or Silverlight application, you must use assemblies that have also been compiled against the same profile.

This is the 2.0.5.0 profile.