【问题标题】:Best way for Unit Testing MonoTouch Projects?单元测试 MonoTouch 项目的最佳方式?
【发布时间】:2012-09-11 12:11:33
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    实际上有没有使用 NUnit 对 MonoTouch 项目进行单元测试的好方法

    Touch.Unit

    还有 MonoDevelop 测试运行器?

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

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

    稍后一切都应该与 Jenkins (CI) 一起工作。

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

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

    Touch.Unit 不是关于 UI 测试的。事实上,它在 UI 测试中非常糟糕(但这不是重点)。

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

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

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

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

    classic nunit 测试程序集将成为 常规 框架项目,并且能够从 default NUnit 运行器 运行或来自 MonoDevelop 单元测试运行程序。

    【讨论】:

    • 感谢您的回复(顺便说一句。几分钟前我刚刚给您写了一封电子邮件,内容是关于自己编译 Touch.Unit ;))。我知道 Touch.Unit 与 UI 测试无关,我的意思是您以更好的方式描述的内容,尤其是来自 monotouch.dll 的依赖项。我在当前正在测试的系统中没有这种依赖关系,所以我对这么多的挣扎感到惊讶。在两种项目中管理课程似乎是一个好方法。谢谢你的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    相关资源
    最近更新 更多