【问题标题】:How to run MonoTouch unit tests in MonoDevelop?如何在 MonoDevelop 中运行 MonoTouch 单元测试?
【发布时间】:2012-04-03 16:08:07
【问题描述】:

添加 MonoTouch 单元测试项目后,我必须通过模拟器运行测试。 由于我的大部分测试都不测试 UI,有没有办法像普通的 nunit 项目一样通过 MonoDevelop 运行测试?

【问题讨论】:

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


    【解决方案1】:

    有没有办法像普通的 nunit 项目一样通过 MonoDevelop 运行测试?

    根据您的单元测试,您可能仍会继续使用正常单元测试项目。它们将由 MonoDevelop 的测试运行程序执行,该运行程序在主机操作系统(例如 OSX)下的普通/桌面 .NET 运行时(例如 Mono)下运行。

    因此,如果您有 C# 测试代码不依赖于任何特定于 iOS 的内容,那么此选项始终可用。

    相比之下,MonoTouch 单元测试项目 旨在使用Touch.Unit 测试运行程序 iOS(模拟器或设备)下执行。因此,它必须是一个应用程序,因为 general 运行程序(或任何其他)应用程序不可能(即在 iOS 下允许)下载和执行代码(例如,包含您的测试的库)。

    除了运行程序之外,这些项目基本上只是对 NUnitLite (0.6) 程序集的引用,为您提供单元测试框架。

    因为我的大多数测试都不测试 UI

    Touch.Unit 不是为了运行 UI 测试——就像 NUnit(带有它的 GUI 运行器)不是为了对 System.Windows.Forms 应用程序进行单元测试一样。它提供 UI 的事实使得测试(某些)UI 组件变得更加困难。

    Touch.Unit 的主要目标是允许您在与真实 iOS 设备(或在较小程度上是 iOS 模拟器)相同的条件(例如 CPU、内存)和限制(例如 AOT)下运行测试拥有 - 同时让您可以访问每个 iOS 特定 API(由设备或模拟器支持)。

    【讨论】:

    • 我正在单元测试的项目有一个 WCF 引用,然后由实际的 iOS/MonoTouch 项目引用。为了能够添加项目作为参考并使用正确的 WCF 程序集,我必须使 WCF 项目 MonoTouch 兼容。通过这样做,我现在只能使用 Touch.Unit 进行单元测试,但我不需要引用任何 iOS API。我做错了吗?
    • 我不是 WCF 专家,但 MonoTouch 仅提供 WCF 的一个子集。所以我猜测生成的代码,在 MonoTouch 上运行,也可以(一旦重新编译)针对完整的框架(用于 normal 测试运行程序)。您可能必须为您的 WCF 代码创建一个单独的项目(或至少是配置)(以获取完整的框架引用),然后将(相同的)源链接(从现有项目到新项目)。
    • 据我所知,Monotouch 使用月光 WCF 参考。无论如何,它变得太复杂了,我将使用 Touch.Unit 和模拟器运行它
    • 是的,MonoTouch 支持 Silverlight WCF 子集(来自 Moonlight 代码库)。 AFAIK 这是完整框架的子集,但可能存在一些差异,就像其他 SL API 一样(许多 Silverlight API 添加都回到了 .NET 4.0 BCL)。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    相关资源
    最近更新 更多