[UWP]涨姿势UWP源码——Unit Test

简介: 原文:[UWP]涨姿势UWP源码——Unit Test  之前我们讨论了涨姿势UWP的RSS数据源获取,以及作为文件存储到本地,再将数据转化成Model对象。这部分非UI的内容非常适合添加Unit Test。
原文: [UWP]涨姿势UWP源码——Unit Test

  之前我们讨论了涨姿势UWPRSS数据源获取,以及作为文件存储到本地,再将数据转化成Model对象。这部分非UI的内容非常适合添加Unit Test。不涉及UI的话,UT写起来简单高效,很是值得投入一点时间以保证程序的可靠性。

  UWPUnit Test创建起来并不复杂,首先在涨姿势UWP解决方案下,创建和ZhangZiShiRssRead工程同级的UT工程:ZhangZiShiRssRead.UTTest

  

  点击确定之后,会创建新的UT工程,结构和一般的UWP工程基本一致,同时会自动包含ZhangZiShiRssRead工程的引用,并会创建UnitTestApp这样的入口文件,以及用于写Test CaseUnitTest1.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,这时默认会在左侧打开测试资源管理器,其中会显示PassFailTest Case,堆栈信息等等。

  

  这里需要注意的是,我们的APP可能会用到一些文件放在Asserts目录,要保证Test工程也有相同的资源,否则可能会无法编译通过。

  如果在运行测试后,发现个别测试没有通过,也可以在测试资源管理器中选中失败的测试,再点击菜单“测试”->“调试”->“选定的测试”进行单步调试,设置断点来判断问题发生的原因,就和正常的debug一样。

  有时遇到某些对象或数据,在UT环境下无法拿到,一般有两个方法。一是通过创建Fake类来提供假的同名类和方法来生产假数据。二是修改要测试类或方法的接口,在创建类实例的时候,将数据从外部传递进来。

  通常一个Test Case会调用被测试的方法,拿到返回值或者某个被修改的标志位,再通过Assert的方法进行断言,判断这个Test Case是否成功运行。我们能够在Assert类中找到AreEqualIsFalseIsNull等等诸如此类的方法。

  在涨姿势UWP中,我添加了TestDownloadRssTestParseRssXmlTestSaveFileTestReadFile这四个Test Case,通过测试RssReaderFileStoreHelper两个类的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

 

目录
相关文章
|
4月前
|
存储 安全 vr&ar
大师学SwiftUI第6章 - 声明式用户界面 Part 3
SwiftUI还内置了创建安全文本框的视图。这一视图会把用户输入的字符替换成点以及隐藏敏感信息,比如密码。 •
52 0
|
传感器 编解码 5G
Unity配置Android开发环境与第一个Demo
ARFoundation之路-环境配置(Android)
497 0
Unity配置Android开发环境与第一个Demo
|
数据库
艾伟_转载:Entity Framework的默认值BUG解决方法
  在使用.Net 3.5里的Entity Framework开发网站的时候,遇到了一个问题:添加记录时,对于DateTime型的数据,无法使用数据库的默认值。   具体的情况是这样的,我的数据库有个Users表,三个字段,id,username,createtime。
841 0
|
XML 数据格式
[UWP]涨姿势UWP源码——RSS feed的获取和解析
原文:[UWP]涨姿势UWP源码——RSS feed的获取和解析   本篇开始具体分析涨姿势UWP这个APP的代码,首先从数据的源头着手,即RSS feed的获取和解析,相关的类为RssReader,所有和数据相关的操作均放在里面。
1547 0
|
Web App开发 移动开发 JavaScript
Win10 UWP开发系列:使用VS2015 Update2+ionic开发第一个Cordova App
原文:Win10 UWP开发系列:使用VS2015 Update2+ionic开发第一个Cordova App 安装VS2015 Update2的过程是非常曲折的。还好经过不懈的努力,终于折腾成功了。 如果开发Cordova项目的话,推荐大家用一下ionic这个框架,效果还不错。
1783 0
|
Windows
张高兴的 UWP 开发笔记:应用内启动应用 (UWP Launch UWP)
  需求:在 A 应用内启动 B 应用,如果 B 应用未安装则跳转应用商店搜索。   启动方式使用 Uri 启动,本文使用尽可能简单,并且能拿来直接用的代码。不涉及启动后的应用数据交互,如需深入了解,请戳 MSDN:https://docs.microsoft.com/zh-cn/windows/uwp/launch-resume/launch-app-with-uri     1. 获取 B 应用 Uri 以及 B 应用激活事件   如果 B 应用已注册 Uri 的话,那很好,记住它备用,可以跳过看第2点了。
896 0