Windows phone 8 单元测试(一)-- 环境搭建

    因为项目原因,研究单元测试。之前也没有接触过单元测试,只是听人说,单元测试可以降低BUG率,至于怎么降低BUG,单元测试是否只有这么一个功能,火力全开的单元测试应该能做些什么,等等,这些问题都没有头绪,也没有一个明确的答案。

        幸好项目中用得到单元测试,也花了点时间了解了一下单元测试的相关知识。这篇博客的目的一是做个总结,二是帮助那些可能遇到问题的人少走些弯路。本博客部分章节应该适用于多数平台,但是本章针对WP平台上单元测试环境的搭建。

        WP系统感觉是微软匆忙推出占领市场的,从其发布起,就感觉它不像个完成品,包括其系统设计,用户体验,对开发人员的支持,都属于半成品。单元测试亦是如此,VS2012 update2之前开发人员只能自己自己搭建单元测试环境,直到Update2之后,才有了内置的针对Windows Phone 8 的 uinit test project。

       我们还是从VS2012 update2之后开始吧,之后的版本都支持单元测试,包括VS2013。

       如何创建一个单元测试,以及如何使用Test Explore MSDN上已经有文章讲述的非常清楚了,搜索"Windows phone 8 uinit test" ,只要照着做一遍,基本都OK了:

      下面是几个注意事项,会在实际操作中遇到:

       1. 需将应用部署到设备或者模拟器上,不然单元测试项目是跑不通的;

       2. 单元测试项目也要安装在设备或者模拟器上,如果之前已经安装了8个项目,则会提示你已安装了最大数量的应用,单元测试失败

       3. 单元失败可能是其他原因造成的,这时你可以查看output窗口中的Test选项来查看具体原因,这些原因非常具体,都能定位到问题:


       4. 如果想要使用Stub,Mock来模拟外部对象,现在只有Moq for Silverlight 版本可用,可以到Moq官网去下载,具体使用方法也在官网上有

       5. 由于单元测试是在工作线程上运作的,如果需要使用到UI线程,则需要自己想办法:

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
    public class UiTestMethodAttribute : TestMethodAttribute
    {
        public override TestResult[] Execute(ITestMethod testMethod)
        {
            var task = ExecuteOnUi(testMethod);

            task.Wait();

            return task.Result;
        }

        private Task<TestResult[]> ExecuteOnUi(ITestMethod testMethod)
        {
            var tsc = new TaskCompletionSource<TestResult[]>();

            Deployment.Current.Dispatcher.BeginInvoke(() => tsc.SetResult(base.Execute(testMethod)));

            return tsc.Task;
        }
    }

       6. 如果应用中使用了异步方法,则测试方法的返回值必须是Task类型。



         以上是我在单元测试中遇到的问题和解决方法,至此,单元测试的环境搭建已经完毕,工具也已经齐全,后面就是具体的实践了。后面的章节主要是自己的一些使用单元测试的感受,希望大家在项目中使用的时候体会一下,然后跟我交流。

    

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值