MonoTouch项目进行单元测试的最佳方法是什么?

6
实际上有没有一种好的方法使用NUnit和MonoDevelop测试运行程序对MonoTouch项目进行单元测试?
我知道有官方的MonoTouch单元测试项目类型,但在模拟器中运行测试不是我想要的方式。现在我想要用MonoDevelop测试运行程序运行测试,以后一切都应该与Jenkins(CI)一起工作。
我知道UI特定代码的限制,所以我想要测试的一切与MonoTouch本身无关,而是关于放置在分离项目中的业务逻辑。
通过将测试添加到MonoTouch库类型项目中,我会获得System.IO.FileNotFoundException,如此处所述:http://ben.phegan.name/index.php/2011/02/28/monotouch-and-unit-testing/ 通过使用单独的NUnit测试项目,我无法引用我的被测试系统,因为它的项目类型是MonoTouch库项目类型,当然,具有不兼容的目标框架(vMonoTouch)。
所以,除了Touch.Unit之外,没有任何真正的替代品,对吗?
1个回答

8

有没有一种好的方法使用NUnit对MonoTouch项目进行单元测试?

Touch.Unit

“还有MonoDevelop测试运行器吗?” 并不是。MonoTouch项目依赖于需要在iOS下执行(而不是OSX)的monotouch.dll。因此,需要在模拟器或设备上执行运行器。 现在,在您的问题中存在一些误解: “后来一切都应该可以与Jenkins(CI)一起工作。” 使用iOS模拟器和/或设备,Touch.Unit已经与持续构建/集成服务器一起使用(只要它们正在运行OSX)。详细信息可在here找到。 “我知道关于UI特定代码的限制,” Touch.Unit不是关于UI测试的。实际上,它在UI测试方面相当糟糕(但这并不重要)。 Touch.Unit是在iOS上执行的测试运行器。这使您可以在自己的测试中使用MonoTouch / iOS API(它可以是UIKit,但也可以是StoreKit,GameKit,* Kit,任何Foundation类...它是一个相当大的世界)。

那么,Touch.Unit 没有真正的替代品,是吗?

是的。如果您的业务逻辑很好地隔离,并且不依赖于 monotouch.dll,则应该可以将其构建为:

  • 非 MonoTouch 项目(不同的项目,相同的源代码),即链接到 普通 框架;或者
  • 从单元测试程序集中链接到源代码(该程序集链接到 普通 框架);

那个 经典的 nunit 测试程序集将成为一个 普通的 框架项目,并且能够在 默认的 NUnit 运行程序或者 MonoDevelop 单元测试运行程序内运行。


感谢您的回复(顺便说一下,几分钟前我给您写了一封关于如何自己编译Touch.Unit的邮件;)). 我知道Touch.Unit与UI测试无关,我的意思是您更好地描述的部分,特别是来自monotouch.dll的依赖项。在我当前的测试系统中没有这些依赖项,所以我对此感到惊讶。似乎在两种项目中管理类是一个不错的方法。感谢您的建议。 - asp_net

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