我目前正在使用Silverlight单元测试框架,但我更喜欢直接在VS2010中运行测试。 我很想知道其他人使用的方法和工具。
我正在使用带有Prism和MVVM模式的Silverlight 4,并且我特别关注集成的Silverlight单元测试支持,以便我可以将其用于我的ViewModel单元测试。 我正在使用Unity进行依赖注入,并通过使用Moq for Silverlight来模拟调用我的WCF层中的调用来编写单元测试。 我目前甚至没有考虑集成测试,但即使在简单的单元测试中,测试单个ViewModel命令,对模拟服务层的服务请求可能需要大约50毫秒。 因此,对异步测试的支持对我很重要。
我在这里提出的问题与视图测试无关,过去我已经成功地使用System.Windows.Automation.Peers处理过视图测试,并且 - 尽管我还没有使用过它 - 现在可能可以更轻松地处理VS 2010 Feature Pack 2中的支持(从我所了解的情况来看,该支持似乎针对自动化/回放UI测试)。
我应该提到,我迄今为止查看和使用的产品的发现如下:
- Silverlight单元测试框架-我目前正在使用这个,它非常棒,但是它的限制是(a)它没有与Visual Studio集成; (b)如果你不想运行所有测试,你只能使用简单的标签表达式过滤。
- StatLight-非常好用。我目前正在使用它,并在以前的项目中针对Silverlight 3使用了自版本0.9。作为一个命令行工具,它可以与持续集成服务器集成 - 这肯定处理了另一个所需的场景。但是在开发过程中直接集成到Visual Studio是没有用的。
- Silverlight的单元测试结果查看器(Visual Studio画廊上的Visual Studio扩展程序)-看起来很有前途,但它的限制是(a)当前无法找到位于解决方案文件夹中而不是在解决方案根目录下的项目; (b)通过StatLight运行给定程序集中的所有测试,似乎没有运行特定测试或一组测试的明显能力。
- Einar Ingebrigtsen的Silverlight Unit Test Runner for ReSharper,后来成为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单元测试方法?