zoukankan      html  css  js  c++  java
  • [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

  • 相关阅读:
    Java中-classpath和路径的使用
    总是分不清
    Maven Web项目部署到Tomcat下问题
    一、数据设计规范
    一、入职学习
    一、服务器控件
    WebApiThrottle限流框架
    一、接口的规则
    一、免费API调用
    十、锁
  • 原文地址:https://www.cnblogs.com/manupstairs/p/6220285.html
Copyright © 2011-2022 走看看