这是我想要做的(如果可能的话):
>为不需要手机功能的视图模型和应用程序服务编写单元测试
>通过Resharper或TD.NET在Visual Studio中直接执行测试
>使用XML从命令行执行单元测试,而不启动仿真器
>最好是恢复(到第三方库去)SDK更新
由于我想把这个问题作为一个资源给别人寻找同样的事情,所以我希望避免的答案是:
>不完整或被遗弃的项目的开源端口
>仅在某人的博客上可用作附件的项目
我也想获得完整的BDD风格验收测试,但是that’s another issue entirely。
单元测试
意图:要运行独立(无手机功能),通常来自IDE和Continuous Integration服务器的快速执行测试,无需仿真器(例如,TDD View Models)
我在多个演示文稿中推荐的方法包括在.NET 4项目中引用源文件,并对这些文件运行测试(引用桌面等效的程序集)。如果您的代码不使用与桌面BCL不同的任何API,并且可以处理保持参考项目最新(新文件不会自动添加),而不是足够的。
否则,您可以按照以下步骤执行在桌面CLR中引用WP7程序集的代码:
>将Silverlight 4类库(而不是Silverlight for Windows Phone项目)添加到您的解决方案中
>在类库中,将除了mscorelib(基本上是System。*和Microsoft。*)之外的所有框架引用的Copy Local设置为true
>从这个测试库中添加一个引用到NUnit.Silverlight.Framework.dll和NUnit.Silverlight.Compatibility.dll从NUnit-Silverlight project
>将测试库中的引用添加到主Windows Phone项目中,忽略版本警告。
>使用ReSharper(测试)或TestDriven.NET从IDE运行测试
>使用来自latest NUnit release的标准.NET 2.0 nunit-console.exe从命令行运行测试,传入/framework=v4.0。
(由于WP7使用SL3,所以需要上述多种解决方法。一旦芒果与SL4运行时一起发布,它应该是一个更干净的设置)
集成测试
意图:要运行长时间运行的测试,与模拟器上的代码外部资源(如电话功能和Web服务)进行交互,无论是按需还是在CI服务器上
更新单元测试Windows Phone 8应用程序will be official supported in Visual Studio 2012 Update 2,包括VS集成和命令行支持。这些测试在模拟器中运行,所以我将它包含在集成测试中。
Silverlight测试框架的WP7端口目前不支持此功能(仅作为博客下载)。
在此期间,我创建了一个codeplex project,它添加了一个MSBuild任务,启动模拟器并将结果整理为一个XML文件。最简单的方法是安装wp7-ci NuGet package。
注意:在Windows Server requires modifying the installer configuration上安装WP7 SDK,不受支持,但效果很好。
验收/系统测试
意图:要在模拟器上运行端到端的自动化测试,这些测试与手机的UI交互,无论是按需还是在CI服务器
Expensify(SEO命名不佳)Windows Phone Test Framework支持使用SpecFlow从主机PC编写UI自动化测试。