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

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

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

  

  点击肯定以后,会建立新的UT工程,结构和通常的UWP工程基本一致,同时会自动包含ZhangZiShiRssRead工程的引用,并会建立UnitTestApp这样的入口文件,以及用于写Test CaseUnitTest1.cs文件,重命名该文件(一般一个UT工程会有多个UnitTest文件,能够根据测试内容来取名,好比测试FileStoreHelper类的就能够叫FileStoreHelper.Test.cs),咱们这里由于全部Test Case都写在一个文件中,文件名就叫UnitTest.csasync

  用于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工程也有相同的资源,不然可能会没法编译经过。spa

  若是在运行测试后,发现个别测试没有经过,也能够在测试资源管理器中选中失败的测试,再点击菜单“测试”->“调试”->“选定的测试”进行单步调试,设置断点来判断问题发生的缘由,就和正常的debug同样。debug

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

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

  在涨姿式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

相关文章
相关标签/搜索