[UWP]涨姿势UWP源码——Unit Test
之前我們討論了漲姿勢UWP的RSS數據源獲取,以及作為文件存儲到本地,再將數據轉化成Model對象。這部分非UI的內容非常適合添加Unit Test。不涉及UI的話,UT寫起來簡單高效,很是值得投入一點時間以保證程序的可靠性。
UWP的Unit Test創建起來并不復雜,首先在漲姿勢UWP解決方案下,創建和ZhangZiShiRssRead工程同級的UT工程:ZhangZiShiRssRead.UTTest。
點擊確定之后,會創建新的UT工程,結構和一般的UWP工程基本一致,同時會自動包含ZhangZiShiRssRead工程的引用,并會創建UnitTestApp這樣的入口文件,以及用于寫Test Case的UnitTest1.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,這時默認會在左側打開測試資源管理器,其中會顯示Pass和Fail的Test Case,堆棧信息等等。
這里需要注意的是,我們的APP可能會用到一些文件放在Asserts目錄,要保證Test工程也有相同的資源,否則可能會無法編譯通過。
如果在運行測試后,發現個別測試沒有通過,也可以在測試資源管理器中選中失敗的測試,再點擊菜單“測試”->“調試”->“選定的測試”進行單步調試,設置斷點來判斷問題發生的原因,就和正常的debug一樣。
有時遇到某些對象或數據,在UT環境下無法拿到,一般有兩個方法。一是通過創建Fake類來提供假的同名類和方法來生產假數據。二是修改要測試類或方法的接口,在創建類實例的時候,將數據從外部傳遞進來。
通常一個Test Case會調用被測試的方法,拿到返回值或者某個被修改的標志位,再通過Assert的方法進行斷言,判斷這個Test Case是否成功運行。我們能夠在Assert類中找到AreEqual,IsFalse,IsNull等等諸如此類的方法。
在漲姿勢UWP中,我添加了TestDownloadRss,TestParseRssXml,TestSaveFile和TestReadFile這四個Test Case,通過測試RssReader和FileStoreHelper兩個類的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
?
posted on 2017-09-20 13:39 NET未來之路 閱讀(...) 評論(...) 編輯 收藏轉載于:https://www.cnblogs.com/lonelyxmas/p/7561037.html
總結
以上是生活随笔為你收集整理的[UWP]涨姿势UWP源码——Unit Test的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习实战】第1章 机器学习基础
- 下一篇: BZOJ 1685 [Usaco2005