单元测试对工程质量带来的作用就不详细说明了,本文只讨论如何在WP开发环境下搭建测试工程
历史
从WP7时代官方是不支持UnitTest工程的,因此需要采用WPToolkitTest这个工程来实施单元测试,
可参考Nokia Develop上的文章:地址
这种方式来搭建的测试环境,测试时需要在模拟器或者真机上点击开始测试按钮进行测试,如此方式笔者认为并不友好
到了VS2012Update2发布之后官方的单元测试终于加入了进来,并且可以依靠VS的测试管理来更加方便的进行管理测试用例:
搭建步骤
参考MSDN中的教程:地址
这个教程已经很清晰的说明了如何创建一个Windows Phone Unit Test 工程,但教程中未提及的内容还是有一些的,下面我们来一一解决这个问题:
1、Async/Await
来到了WP8时代,加入了await和async这两个关键字,显然这两个关键字对于程序结构的改善是明显的,因此在项目中我们也会自己来封装如此风格的接口,那么如果测试代码中存在此种风格的代码该如何测试呢?
通过例子来看下:
我们看上面这个接口,接口中的方法是通过token获取用户信息那么我们在测试的时候对应的测试代码应该这样来写:
很关键的一个点就是要把测试函数加上async 和 Task修饰词,这样便可以正常的测试了
2、mock库该怎么办
提到单元测试就会说道mock这个概念,这里依然不详细展开来说明why mock 以及how to mock,可自己去关键词来搜索学习。
在笔者的使用过程中发现,用nuget方式来添加mock库时,大多数的主流mock库都不支持Windows Phone:
比如上面的Moq 这个库,这让人很沮丧。。。
但有问题就自然有解决办法,我们不通过Nuget来添加,而是使用Silverlight版本的Moq,下载地址
下载后找到编译好的Silverlight版本的dll添加到工程中:
注意这两个都要添加进来,添加时会有警告,忽略了就可以了,如此我们的Moq库就可以正常使用了:
上面的两个问题解决后Windows Phone下的测试环境搭建就完成了!
WP8交流群:182659848