关闭

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

122人阅读 评论(0) 收藏 举报

之前我们讨论了涨姿势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一样。http://www.duxia.org/book/9889.html

  有时遇到某些对象或数据,在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

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

通过VS2015查看GitHub上的微软官方例子学习UWP

Win10发布有一段时间了,随之而来的就是UWP。 目前市面上有关Win10开发的教程较少,假设你已经能够熟练使用C#进行.NET平台的开发,比如:WPF、WP8.1开发等,那通过微软在GitHub上...
  • bending1218
  • bending1218
  • 2016-01-15 13:50
  • 1679

win10 uwp 打开文件管理器选择文件

本文:让文件管理器选择文件,不是从文件管理器获得文件。 假如已经获得一些文件,那么如何从文件管理器选择这些文件?
  • lindexi_gd
  • lindexi_gd
  • 2017-04-28 09:04
  • 1191

UWP入门(八)--几个简单的控件

每天看几个,要不聊几天我就可以看完啦,加油!看效果1. CheckBox <StackPanel Grid.Column="1" M...
  • u011033906
  • u011033906
  • 2017-03-22 18:40
  • 1449

涨姿势UWP源码——IsolatedStorage

前一篇涨姿势UWP源码分析从数据源着手,解释了RSS feed的获取和解析,本篇则会就数据源的保存和读取进行举例。   和之前的Windows Runtime一样,UWP采用IsolatedSt...
  • lHz76ttw1U
  • lHz76ttw1U
  • 2017-03-08 15:47
  • 121

uwp开发-demoHelloworld源码

  • 2015-09-21 09:59
  • 19.38MB
  • 下载

Windows UWP微软源码(代码参考大全)

  • 2017-08-26 22:40
  • 26.09MB
  • 下载

UWP 发送邮件源码

  • 2017-02-19 10:25
  • 3.73MB
  • 下载

知乎日报UWP源码

  • 2016-01-18 11:32
  • 3.47MB
  • 下载

博客园UWP源码

  • 2016-01-18 11:35
  • 2.33MB
  • 下载

Unit Test 访问Internal类型和方法

原则上Unit Test主要是测试一些Public的类型和方法等,但是有时候我们需要验证标记为Internal的类型是不是正常工作。那么,既然被标记为Internal了,应该就不能被所在项目之外的项目...
  • jiangzhanchang
  • jiangzhanchang
  • 2014-03-14 11:27
  • 2307
    个人资料
    • 访问:40580次
    • 积分:1530
    • 等级:
    • 排名:千里之外
    • 原创:93篇
    • 转载:115篇
    • 译文:0篇
    • 评论:13条
    2
    2222222222