[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

相關文章
相關標籤/搜索