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 没有任何真正的替代品,不是吗?

4

1 回答 1

8

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

触控单元

和 MonoDevelop 测试运行器?

并不真地。MonoTouch 项目取决于monotouch.dll哪些需要在 iOS(不是 OSX)下执行。因此,运行程序需要在模拟器或设备上执行。

现在您的问题中有一些误解:

后来一切都应该与詹金斯(CI)一起工作。

Touch.Unit 已经与使用 iOS 模拟器和/或设备的持续构建/集成服务器(只要它们运行 OSX)一起使用。详情可在此处获得。

我知道关于 UI 特定代码的限制,

Touch.Unit与 UI 测试无关。事实上,它在 UI 测试方面非常糟糕(但这不是重点)。

Touch.Unit 是一个在 iOS 上执行的测试运行器。这允许您在自己的测试中使用 MonoTouch / iOS API(它可以是 UIKit,但也可以是 StoreKit、GameKit、*Kit、任何 Foundation 类……这是一个相当大的世界)。

所以,Touch.Unit 没有任何真正的替代品,不是吗?

是的。如果您的业务逻辑被很好地隔离并且不依赖于monotouch.dll那么您应该能够将其构建为:

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

然后,那个经典的 nunit 测试程序集将是一个常规的框架项目,并且能够从默认的NUnit运行器MonoDevelop 单元测试运行器中运行。

于 2012-09-11T13:27:11.977 回答