从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()中进行清理工作,删除了数据库中的数据.
测试结果为:
代码在这里.点击打开链接