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