Windows phone 7 Windows Phone的单元测试状态
我一直在将我的Google Fu推向极限,试图找到最推荐/最稳定的Windows Phone应用程序TDD+CI设置。有谁能成功地为我指出正确的方向吗 以下是我希望能够做到的(如果可能的话):Windows phone 7 Windows Phone的单元测试状态,windows-phone-7,tdd,continuous-integration,windows-phone,Windows Phone 7,Tdd,Continuous Integration,Windows Phone,我一直在将我的Google Fu推向极限,试图找到最推荐/最稳定的Windows Phone应用程序TDD+CI设置。有谁能成功地为我指出正确的方向吗 以下是我希望能够做到的(如果可能的话): 为不需要电话功能的视图模型和应用程序服务编写单元测试 通过Resharper或TD.NET直接在Visual Studio中执行测试 在不启动仿真器的情况下,从命令行执行单元测试,并输出XML 最好能够适应SDK更新(就第三方库而言) 因为我想把这个问题作为其他人寻找同样问题的参考资料,所以我更希望避
- 为不需要电话功能的视图模型和应用程序服务编写单元测试
- 通过Resharper或TD.NET直接在Visual Studio中执行测试
- 在不启动仿真器的情况下,从命令行执行单元测试,并输出XML
- 最好能够适应SDK更新(就第三方库而言)
- 未完成或放弃的项目的开放源代码端口
- 仅在某人的博客上作为附件提供的项目
我也想进行完整的BDD风格的验收测试,但是。我认为这件事与您编写测试的方式有关
- 最终,一些代码将不得不触及一些特定于手机的东西。这些应该被隔离为依赖项并伪造。我还没有找到一个合适的方法来让单元测试在手机内部实际运行。不幸的是,这些依赖关系对我来说还没有经过测试
- 使用NUnit for Silverlight可以获得断言:
- 我已经使用Resharper运行了单元测试,没有问题。类似地,您可以使用nunit控制台运行测试并获得XML输出
- Ayende针对Silverlight的Rhino Mock适用于模拟/存根依赖项
- 持续集成有点棘手。WP7 SDK在服务器平台上不可用,因此我在Windows 7上为我的CI构建了一个新SDK。也许有办法绕过这个限制,但我没有费心
public partial class SignUpPage
{
public SignUpPage()
{
InitializeComponent();
DataContext = IoC.Resolve<SignUpViewModel>();
}
}
公共部分类签名
{
公共签名页()
{
初始化组件();
DataContext=IoC.Resolve();
}
}
幸运的是,这是唯一一个真正出现在我的XAML代码中的C代码。从这里开始,它就是使用绑定和DataContext的非常常规的MVVM
现在,您可以测试ViewModel,注入所需的依赖项(或伪造它们),只要您不尝试使用特定于WP7的内容,它就可以在不进入模拟器的情况下正常运行。这里有一个链接,指向一位已成功在“手机”上自动执行WP7测试、自动部署应用程序、运行测试并读取结果的人:
它利用了API,在我开始使用它之前,它看起来非常有趣,并且发现大多数函数都抛出了未实现的异常-但是有足够多的函数可以运行自动测试。我将此答案添加为社区Wiki,以便其他人可以修改它以使其保持最新 单元测试 意图:运行独立的(无电话功能),快速执行测试,通常来自IDE和持续集成服务器,而不需要模拟器(例如TDD视图模型) 我在许多演示文稿中看到的推荐方法涉及引用.NET4项目中的源文件,并针对这些文件运行测试(引用程序集的桌面等价物)。如果您的代码没有使用任何与桌面BCL不同的API,并且您可以处理使引用项目保持最新(不会自动添加新文件)的问题,那么这就足够了 否则,您可以按照以下步骤执行引用桌面CLR中WP7程序集的代码:
Copy Local
设置为true
NUnit.Silverlight.Framework.dll和NUnit.Silverlight.Compatibility.dll的引用
nunit console.exe
从命令行运行测试,传入/framework=v4.0