windows phone 单元测试

从wp8以后微软推出了自已的测试框架,叫做windows phone toolkit Test Framework,这套测试框架wp7和wp8都支持.

今天向大家介绍一下,这个测试框架安装和使用方法

1 首先建议大家使用vs 2012 for windows phone ,使用NuGet库管理工具安装windows phone toolkit 和windows phone toolkit test framework这两个库,(不会用的同学去百度一下NuGet)

  

2 弹出如下页面 然后分别输入windows phone toolkit和windows phone toolkit test framework,进行安装

3.安装好后,你会发现,NuGet会帮我们向工程引用了三个库,如下图.看多方便啊.如果我们自己在CodePlex上下载的话还需要解压,然后再手动引入到工程中,可是使用NuGet就一步到位啦.

4.启动测试项目,首先你要在MainPage的构造函数里面加上下面这句代码.运行.看一下测试页面.

 	public MainPage()
        {
            InitializeComponent();
            this.Content = UnitTestSystem.CreateTestPage();
        }

5.你会看到这个页面,点击AppBar上面的按钮就开始进行测试了,当然啦.我们的测试工程里面没有写需要测试的逻辑,会一直显示Running Tests....

                     

6.   当然啦.如何你想自己写一个类然后对这个类的功能进行测试的话,

       在进行使用这个框架前先来了解一下什么是单元测试,我在网上找到如下资料

           什么是单元测试

  单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。例如,你可能把一个很大的值放入一个有序list  中去,然后确认该值出现在list  的尾部。或者,你可能会从字符串中删除匹配某种模式的字符,然后确认字符串确实不再包含这些字符了。

      单元测试是最微小规模的测试;以测试某个功能或代码块。典型地由程序员而非测试员来做,因为它需要知道内部程序设计和编码的细节知识。这个工作不容易做好,除非应用系统有一个设计很好的体系结构; 还可能需要开发测试驱动器模块或测试套具

    再看看这篇文章点击打开链接

7.新建一个类,添加如下代码 ,这个类的访问权限一定要是Public的,否则在点击测试后,会一直卡在RunningTests...状态.没有测试结果.

   [TestClass]告诉框架,我们要对这个类进行测试,[TestMethod]说明要对这个方法进行测试.还有[ClassInitialize]标签,它会在运行任何应用[TestMethod]标签的方法之前运行,非常适合来创建测试数据,初始化测试的条件.

 应用[TestCleanup]标签的方法会在运行所有应用[TestMethod]标签的方法之后运行.非常适合用来清理测试数据.

理论上每个应用[TestMethod]标签的方法都是独立的,它们应该能以任何顺序运行.不过,某些方法可能会产生副作用,例如,在数据库里添加,更新或者删除数据,为了免除这些因素的干扰,可以应用[TestInitailize]和[TestCleanup]标签来为每一个方法创建一个独立的上下文.

  [TestClass]
   public class MyTestCase
    {
         [TestMethod] 
         public void SimpleTest() 
         { 
             int a = 2; 
             int b = 2; 
             int c = a + b; 
             Assert.IsTrue(c == 4); 
         } 
    }


运行一下.

 这个方法通过测试啦.呵呵.

8.实际使用中需要对公司项目中的代码进行测试,总不能把项目中的代码复制到测试工程中吧.

   我在工程里面创建了一个TestData项目,就相当于公司里的项目,然后在wp8单元测试中引用TestData工程,

  

 

我在测试工程中添加了如下测试代码.

 [TestClass]
   public class MyTestCase
    {
         [TestMethod] 
         public void SimpleTest() 
         { 
             int a = 2; 
             int b = 2; 
             int c = a + b; 
             Assert.IsTrue(c == 4); 
         }
         //对我的项目进行测试
         [TestMethod]
         public void TestSearch()
         {
             StudentsListViewModel studentsViewModel = new StudentsListViewModel("男");
             studentsViewModel.SearchStudentBySexCommand.Execute(null);

             Assert.IsTrue(studentsViewModel.IsSearchSuccess == true);
         }
         private Student[] students;
         [TestInitialize]
         public void InitDataBase()
         {
               students = new Student[]
              {
                  new Student
                  {
                       Sex = "男",
                       Name="测试1",
                       InClass = "一班",
                  },
                  new Student
                  {
                       Sex = "女",
                       Name="测试1",
                       InClass = "一班",
                  },
                  new Student
                  {
                       Sex = "男",
                       Name="测试1",
                       InClass = "一班",
                  },
                  new Student
                  {
                       Sex = "男",
                       Name="测试1",
                       InClass = "一班",
                  }
              };
              TestData.App.LocalDataBase.Students.InsertAllOnSubmit(students);
              TestData.App.LocalDataBase.SubmitChanges();
         }
         [TestCleanup]
         public void CleanupDataBase()
         {
             TestData.App.LocalDataBase.Students.DeleteAllOnSubmit(students);
             TestData.App.LocalDataBase.SubmitChanges();
         }
    }

我在TestData工程里面创建一个SQL Server CE 数据库用来保存学生表,首先在测试工程的InitDataBase()方法中向数据库中添加了几条学生记录,然后使用TestSearch()对按性别搜索功能进行了测试,

在CleanupDataBase()中进行清理工作,删除了数据库中的数据.

测试结果为:

 代码在这里.点击打开链接

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值