Mono Android. 单元测试框架

5

有没有一些支持Mono Android应用程序的单元测试框架?我已经尝试了默认的Visual Studio测试框架和NUnit框架,但都没有成功。
我的最后一次尝试是:我创建了一个Mono Android类库,引用了nunit.framework,并编写了测试。但是当我尝试启动它们时,我遇到了异常:

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)

我相信这是由于mono android程序集与其他程序集不兼容所致...那么我的问题是:如何使其正常工作?或者也许有一些其他的单元测试框架适用于mono android应用程序?
更新:此问题的解决方法。由于我只需要测试平台无关的模型,所以我创建了一个独立的“代理”Windows类库项目,并向其中添加了从我的Mono for Android类库(项目=>添加现有项...=>[选择所有要添加为链接的文件]=>添加为链接)中选择的模型类的链接。因此,我获得了与任何单元测试框架兼容的程序集,其中包含应该被测试的类。
3个回答

3
如果您想在Mono for Android下运行Visual Studio单元测试,我已经为此编写了一个兼容层和GUI界面。请查看这里Tests Overview Tests Details

1
如果您想在设备上(或模拟器内部)运行单元测试,则应查看Andr.Unit Mono for Android 测试运行程序NUnitLite(0.6)。 它与 Touch.Unit(iOS)类似(具有相同的UI和NUnitLite版本),即使它(目前)在功能方面有所不足(没有网络记录)。 免责声明:我编写了此运行程序。

0

如果您想从Mono for Android或MonoTouch或Silverlight应用程序中引用程序集,您必须使用已针对相同配置文件进行编译的程序集。

这是2.0.5.0配置文件。


是的。这就是为什么我们不能在Silverlight等中使用标准的.NET程序集的原因。我知道由于引用程序集的不同版本,无法同时使用nunit和mono.android。所以我的问题是:也许有人遇到过相同的问题并解决了它。目前我正在尝试使用mscorlib v 2.0.5.0重新编译nunit,也许那样可以解决问题。如果失败了,我会在mac上尝试使用mono。 - Igor V Savchenko
@NicoGranelli:我成功地解决了这个问题。我很快会在我的帖子中更新所接受的解决方案。 @jpobst:顺便说一下,在GitHub上提供了非常好的Mono Android示例,谢谢。 - Igor V Savchenko
@NicoGranelli 我已经更新了我的帖子,并提供了解决方法。 - Igor V Savchenko
@Igor:很有趣,但是我在谷歌上找不到你的帖子。你能发个链接吗?谢谢。 - Thomas Weller
@Thomas Weller,请查看此帖子中的问题。在UPD之后,已经描述了解决方法。 - Igor V Savchenko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接