[UWP]涨姿势UWP源码—Unit Test
来源:互联网 发布:caffe 调用训练好模型 编辑:程序博客网 时间:2024/05/09 19:11
UWP的Unit Test创建起来并不复杂,首先在涨姿势UWP解决方案下,创建和ZhangZiShiRssRead工程同级的UT工程:ZhangZiShiRssRead.UTTest。
点击确定之后,会创建新的UT工程,结构和一般的UWP工程基本一致,同时会自动包含ZhangZiShiRssRead工程的引用,并会创建UnitTestApp这样的入口文件,以及用于写Test Case的UnitTest1.cs文件,重命名该文件(通常一个UT工程会有多个UnitTest文件,可以根据测试内容来取名,比如测试FileStoreHelper类的就可以叫FileStoreHelper.Test.cs),我们这里因为所有Test Case都写在一个文件中,文件名就叫UnitTest.cs。
用于Unit Test的类文件和普通类是同样的写法,唯一区别是需要加上[TestClass]的attribute来标识。同样需要运行测试的每个Test Case,也都要加上[TestMethod]的attribute。
[TestMethod] public async Task TestSaveFile() { var fileStoreHelper = new FileStoreHelper(); var rssReader = new RssReader(); var result = await rssReader.DownloadRssString(); var isSuccess = await fileStoreHelper.SaveRssFileAsync(result); Assert.IsTrue(isSuccess); } [TestMethod] public async Task TestReadFile() { var fileStoreHelper = new FileStoreHelper(); var rssReader = new RssReader(); var result = await rssReader.DownloadRssString(); await fileStoreHelper.SaveRssFileAsync(result); var content = await fileStoreHelper.ReadRssFileAsync(); Assert.AreEqual<string>(result, content); }
写好UT之后,可以通过菜单栏的“测试”来选择运行所有的Test Case,这时默认会在左侧打开测试资源管理器,其中会显示Pass和Fail的Test Case,堆栈信息等等。
这里需要注意的是,我们的APP可能会用到一些文件放在Asserts目录,要保证Test工程也有相同的资源,否则可能会无法编译通过。
如果在运行测试后,发现个别测试没有通过,也可以在测试资源管理器中选中失败的测试,再点击菜单“测试”->“调试”->“选定的测试”进行单步调试,设置断点来判断问题发生的原因,就和正常的debug一样。http://www.duxia.org/book/9889.html
有时遇到某些对象或数据,在UT环境下无法拿到,一般有两个方法。一是通过创建Fake类来提供假的同名类和方法来生产假数据。二是修改要测试类或方法的接口,在创建类实例的时候,将数据从外部传递进来。
通常一个Test Case会调用被测试的方法,拿到返回值或者某个被修改的标志位,再通过Assert的方法进行断言,判断这个Test Case是否成功运行。我们能够在Assert类中找到AreEqual,IsFalse,IsNull等等诸如此类的方法。
在涨姿势UWP中,我添加了TestDownloadRss,TestParseRssXml,TestSaveFile和TestReadFile这四个Test Case,通过测试RssReader和FileStoreHelper两个类的public方法,进而覆盖了类内部的private方法。
本篇简单介绍了UWP中的单元测试,有兴趣的话可以去看看代码。
GitHub源代码地址:
https://github.com/manupstairs/ZhangZiShiRSSRead
Windows Store:
https://www.microsoft.com/zh-cn/store/p/%e6%b6%a8%e5%a7%bf%e5%8a%bfuwp/9nblggh3zqd1
- [UWP]涨姿势UWP源码—Unit Test
- 涨姿势UWP源码——IsolatedStorage
- UWP
- UWP简介:什么是UWP?
- UWP 入门教程1——UWP的前世今生
- UWP入门教程1——UWP的前世今生
- CSDN-UWP
- uwp开发————拍照
- Win10/UWP开发—系统级导航
- Win10/UWP开发—凭据保险箱PasswordVault
- [UWP]在UWP中使用EntityFrameworkCore + SQLite
- 【UWP开发】uwp应用安装失败
- 【一分钟了解UWP】微信UWP
- 【一分钟了解UWP】微信UWP
- UWP学习笔记
- [UWP控件备忘录]ListView
- win10 UWP读写文件
- Win10/UWP开发-Ink
- Memcache源码阅读(8)---多线程
- C++string类常用函数
- 对于C++中异常的常用总结
- studio自定义SearchView的提交按钮图片
- Thinking in java4 16章 数组
- [UWP]涨姿势UWP源码—Unit Test
- C++ MFC常用函数(转)
- iOS 开发 MJRefresh使用详解
- Android API Guide for Media and Camera(二)—— 媒体与相机(媒体记录器)
- EEclub会议收获--16-12-22
- Android 从0开始自定义控件之 View 的 draw 过程 (九)
- Vue入门系列之Vue实例详解与生命周期
- C++ 中常用数学函数
- linux opencv gcc 编译