使用NUnit和MonoDevelop测试运行器对MonoTouch项目进行单元测试真的有一个好方法吗?
我知道有官方的MonoTouch单元测试项目类型,但在模拟器中运行测试不是我想要的方式。现在我想用MonoDevelop测试运行器运行测试,之后一切都应该与Jenkins(CI)一起使用。
我知道UI特定代码的局限性,所以我想要测试的所有东西都与MonoTouch本身无关,而是关于separete项目中的业务逻辑。
通过向MonoTouch Library类型项目添加测试,我得到了System.IO.FileNotFoundException,如下所述:http://ben.phegan.name/index.php/2011/02/28/monotouch-and-unit-testing/
通过使用单独的NUnit测试项目,我无法引用我的测试系统,因为它的项目类型是MonoTouch库项目类型,当然,它具有不兼容的目标框架(vMonoTouch)。
所以,Touch.Unit没有任何真正的替代品,是吗?
答案 0 :(得分:8)
是否真的有一种使用NUnit
对MonoTouch项目进行单元测试的好方法
和MonoDevelop测试跑步者?
不是真的。 MonoTouch项目依赖于需要在iOS(而不是OSX)下执行的monotouch.dll
。因此,跑步者需要在模拟器或设备上执行。
现在你的问题有一些误解:
以后一切都应该适用于Jenkins(CI)。
Touch.Unit已经与连续构建/集成服务器一起使用(只要它们运行OSX),同时使用iOS模拟器和/或设备。详细信息可供here。
我知道有关UI特定代码的限制,
Touch.Unit 不关于UI测试。事实上,在UI测试中它非常糟糕(但这不是重点)。
Touch.Unit是一个在iOS上执行的测试运行器。这允许你在你自己的测试中使用MonoTouch / iOS API(它可能是UIKit,但它可能是StoreKit,GameKit,* Kit,任何基础类......它是一个相当大的世界)。
所以,Touch.Unit没有任何真正的替代品,是吗?
是。如果业务逻辑完全隔离且不依赖于monotouch.dll
,那么您应该能够将其构建为:
经典 nunit测试程序集将成为常规框架项目,并且能够从默认 NUnit运行程序运行或者来自MonoDevelop单元测试运行器。