【发布时间】:2011-05-13 22:15:29
【问题描述】:
我目前正在使用 Silverlight 单元测试框架,但我更喜欢直接在 VS2010 中运行测试。我很想知道其他人使用什么方法和工具。
我将 Silverlight 4 与 Prism 和 MVVM 模式一起使用,并且我对 VS 2010 中的集成 Silverlight 单元测试支持特别感兴趣,我可以将其与我的 ViewModel 单元测试一起使用。我正在使用 Unity 的依赖注入,并且我正在使用 Moq for Silverlight 模拟我的 WCF 层中的调用来编写单元测试。目前我什至没有考虑集成测试,但即使在测试单个 ViewModel 命令的简单单元测试中,对我的模拟服务层的服务请求也可能需要大约 50 毫秒。因此,对异步测试的支持对我来说很重要。
我在这里提出的问题与 View 测试无关,我过去曾使用 System.Windows.Automation.Peers 成功地处理过它,并且 - 虽然我还没有使用它 - 现在可能可以处理借助 VS 2010 Feature Pack 2 中的支持更轻松(根据我收集的内容,它似乎针对 UI 测试的自动化/回放)。
我应该提一下,到目前为止,我已经查看和使用过的产品的发现如下:
- Silverlight 单元测试框架 - 我目前正在使用它,就它而言它很棒,但它的局限性是 (a) 它没有与 Visual Studio 集成; (b) 如果您不想运行所有测试,则只能使用粗略的标签表达式过滤器。
- StatLight - 非常好。我目前使用它,并且从 v0.9 开始在以前的项目中针对 Silverlight 3 时使用它。作为一个命令行工具,它可以与持续集成服务器集成——它当然可以处理另一个需要的场景。但它在开发过程中直接与 Visual Studio 集成没有任何用处。
- Silverlight 的单元测试结果查看器(Visual Studio 库上的 Visual Studio 扩展) - 看起来很有希望,但它的局限性是 (a) 目前无法找到位于解决方案文件夹中的项目,而不是位于解决方案根目录下的项目; (b) 在给定的程序集中(通过 StatLight)运行所有测试,但没有明显的能力运行特定测试或选择的测试。
- Einar Ingebrigtsen 的用于 ReSharper 的 Silverlight 单元测试运行器,后来成为 Odin - 领先于游戏(它首次出现于 2008 年),但限制是该项目似乎不再维护(最近一次更新是 2009 年 4 月)。
- AgUnit ReSharper 插件 (http://agunit.codeplex.com/) - 最初看起来很棒。在下载了它的源代码并构建了最新的(已修复错误的)版本以适用于 ReSharper 5.1 之后,我深受鼓舞。但不幸的是它不处理异步测试。这是线程的设计限制,因此无论您尝试使用 Silverlight 单元测试框架(Microsoft.Silverliht.Testing.SilverlightTest 基类)中内置的异步支持,还是使用 AutoResetEvent 或还要别的吗。 CodePlex 项目论坛上的协调员已经注意到了这一点。这是一个巨大的限制。
- TestDriven.NET 3.0 - 乍一看似乎支持 Silverlight 4.0 测试,但限制(我怀疑)是 Silverlight 4“程序集可移植性”(即在 SL4 和 .NET 4 之间可移植的 5 个依赖程序集) .当然,当我尝试将它与简单的 POC 一起使用时,它使我的 VS 2010 实例崩溃。
也许我在这里遗漏了一些东西 - 我想知道社区中是否有人对 Silverlight 单元测试有更好的想法?
【问题讨论】:
标签: silverlight unit-testing visual-studio-2010 mvvm resharper