2012-04-03 53 views

回答

3

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

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

所以,如果你有 C#测试代码不依赖于任何特定的iOS然后此选项始终可用。

相反MonoTouch的单元测试项目意指使用下的iOS(模拟器或设备)的Touch.Unit测试运行被执行。因此,它必须是应用程序,因为对于通用跑步者(或任何其他)应用程序来说,下载和执行代码(例如包含你的测试的库)是不可能的(即,在iOS下允许的)。

除了跑步者之外,项目基本上只是参考了NUnitLite(0.6)程序集,为您提供了单元测试框架。

由于我的大部分测试不测试UI

Touch.Unit并不意味着运行UI测试 - 就像NUnit的(与它的GUI亚军)并不意味着单元测试System.Windows .Forms应用程序。它提供UI的事实使得测试(某些)UI组件变得更加困难。 Touch.Unit的主要目标是允许您在相同的条件(例如CPU,内存)和限制(例如AOT)下运行您的测试,即真实的iOS设备(或者较小程度上,iOS模拟器)会让你访问每个iOS特定的API(由设备或模拟器支持)。

+0

我单元测试的项目有一个WCF引用,然后由实际的iOS/MonoTouch项目引用。为了能够添加项目作为参考,并使用正确的WCF程序集,我必须使WCF项目兼容MonoTouch。通过这样做,我只能使用Touch.Unit进行单元测试,但我不需要引用任何iOS API。难道我做错了什么? – 2012-04-03 17:28:31

+0

我不是WCF专家,但MonoTouch只提供WCF的一个子集。所以我会猜测,在MonoTouch上工作的生成的代码在完全框架(用于* normal *测试运行器)上也可以工作(一次重新编译)。您可能必须为您的WCF代码创建一个单独的项目(或至少配置)(以获取完整的框架引用),然后将(相同)源(从现有项目到新项目)链接起来。 – poupou 2012-04-03 17:46:01

+0

据我所知,Monotouch使用月光WCF引用。无论如何,它变得过于复杂,我只会使用Touch.Unit和模拟器运行它 – 2012-04-03 17:59:22

相关问题