.NET Compact Framework中是否有一种主流的单元测试框架?

6

我在NUnit和MBUnit方面有丰富的经验,但是对于.NET Compact Framework开发还很新手,希望能够正确入手。

是否有一种主流的单元测试框架适用于.NET Compact Framework,如果有,它是什么?

5个回答


4
我们在 TFS(2008)下使用 MSTest 进行测试。它的最大优点是可以在实际设备上运行测试(我们同时运行模拟器和物理设备),而且测试由服务器驱动,而不是设备。这意味着你不必从设备 UI(例如 CFNUnitBridge)中选择要运行的测试等操作,这很麻烦,也不利于持续集成。
然而,MSTest 并非万能药。它有一些严重的缺点(例如测试调试非常痛苦,测试启动速度慢),但它比我们尝试过的任何其他东西都要好。希望随着微软的发展,可用性会得到改善,我们可以继续使用我们现有的测试框架。
使用其他任何东西都太冒险了,因为许多设备的框架和库往往会没有大的赞助商就凋零。例如,NUnitLite 只有 477 次下载,而且在本文发布时已经有两年的生命周期,代码变化很少,活动也很少,这并不能使人对其功能增长充满信心。

谢谢 - 我听说VS 2010中的测试功能很不错,所以我认为你的希望很可能会得到回报。 - Hugh
数据库测试(无GUI)也在真实设备上运行吗? - hellboy
NUnitLite现已在github上发布了1.0版本。 - hellboy
紧凑框架支持将在1.0之后停止? http://groups.google.com/forum/#!topic/nunitlite/uM4C3zQ5kg4 - hellboy
事实上,我的建议是让他们在未来的版本中放弃支持,因为维护一个垂死技术的支持可能不值得他们花费时间和精力。保持代码库的CF兼容性并不是一件小事,特别是如果你想使用半现代的语言特性。 - ctacke

1

@Simon:为CF.NET编译的模块无法在桌面硬件上运行,因此无法使用NUnit进行测试。


我之前不知道这件事,请授予我声望的人能够移除它吗? - Simon Johnson
1
不是百分之百准确的。CF程序集是可重定向的,因此如果它们没有使用CE特定的调用,则它们将起作用。让测试框架加载CF代码而不尝试部署它是困难的部分。 - ctacke
ctacke,我认为你所说的“可重定向”是指它们可以作为标准框架程序集构建。我考虑过这个选项,但它会增加构建的复杂性,并且我们不会在构建生产代码时测试代码。 - Eric Farr
我现在明白了ctacke所说的“CF程序集是可重定向的”是什么意思。这意味着它们实际上会尝试在桌面上运行。有关详细信息和选项,请参阅此文章:http://msdn.microsoft.com/en-us/magazine/cc163387.aspx - Eric Farr

1

你可能已经明白了,但是在使用Visual Studio 2008 Professional时,“最好”的方法是使用MSTest(我一直是NUnit的支持者,但这就是它)。

右键单击一个方法或类,然后选择“创建单元测试”。这将引导您创建测试项目,并提供所有必要的依赖项以开始测试。

关键点是,这将在设备上运行测试--这正是您想要发生的,然后将结果报告给您在MSTest运行器中。

尽管如此,仍然存在测试问题。我找不到任何适用于.net cf的模拟框架。但这是一个开始。


0
在一个运行于Portable.NET上的嵌入式项目中,由于我们无法使NUnit代码编译和在该运行时上运行,因此我们最终编写了我们自己的最小版本的NUnit。实际上,这并不是非常困难的事情。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接