unit-testing - 单元测试 MonoTouch 项目的最佳方法?

标签 unit-testing xamarin.ios nunit monodevelop touch.unit

实际上是否有一种使用 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 替代品,不是吗?

最佳答案

Is there actually a good way to unit test MonoTouch projects using NUnit

Touch.Unit

and the MonoDevelop test runner?

不是真的。 MonoTouch 项目依赖于 monotouch.dll,它需要在 iOS(而不是 OSX)下执行。因此需要运行程序在模拟器或设备上执行。

现在您的问题存在一些误解:

later everything should work with Jenkins (CI).

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

I know the limitations about UI specific code,

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

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

So, there isn't any real alternative to Touch.Unit, is it?

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

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

经典 nunit 测试程序集将成为常规框架项目,并且能够从默认 NUnit 运行程序运行来自 MonoDevelop 单元测试运行程序。

关于unit-testing - 单元测试 MonoTouch 项目的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12369434/

相关文章:

java - 抽象类中的模拟时钟抛出 NullPointerException

xamarin.ios - 带有 CFNetworkHandler 和 NTLM 的 HttpClient

objective-c - 已完成启动覆盖?

xamarin.ios - 键盘打开时的 Xamarin 按钮命令

unit-testing - 如何运行Nunit的显式测试用例

.net - NUnit 不会释放自定义类库 dll 上的锁...运行 NUnit 后无法编译类库

java - 注入(inject)测试

javascript - Sinonjs如何 stub 依赖注入(inject)类?

c# - 单元测试 - 依赖测试

.net - 使用 Nunit 的架构和存储过程测试