首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
華為認證 | Java認證
公務員 | 報關員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導游資格
報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護士
會計從業(yè)資格考試會計證) | 經(jīng)濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師
注冊資產(chǎn)評估師 | 高級會計師 | ACCA | 統(tǒng)計師 | 精算師 | 理財規(guī)劃師 | 國際內(nèi)審師
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產(chǎn)估價師 | 土地估價師 | 巖土師
設備監(jiān)理師 | 房地產(chǎn)經(jīng)紀人 | 投資項目管理師 | 土地登記代理人 | 環(huán)境影響評價師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲
您現(xiàn)在的位置: 考試吧(Exam8.com) > 軟件水平考試 > 復習資料 > 軟件評測師 > 正文

單元測試小技巧


  
  作為一個簡單的練習,如果你理解了上例中Calc分列方法的用法,你很可能可以進行很好的推測,但是他可以簡單的作為人員數(shù)量的用例使得輸出結果為1000:


  • 在組中返回最大的負數(shù)作為一個正數(shù)。
 
  • 如果數(shù)字是負數(shù)且返回值為剩下幾個數(shù)的總和作為一個正數(shù),那么忽略第一個數(shù)字。
 
  • 返回相互作乘積運算而得的數(shù)字。

  現(xiàn)在請參考下面在單元測試之中的小改動:

  <TestMethod()> _
  Public Sub Parse_NegativeFirstNum_ReturnsSumOfTheRestAsPositive()
      Dim c As New Calc
      Dim parsedSumResult As Integer = c.Parse("-1", "-1000")
      Const SUM_WITH_IGNORED_FIRST_NUM As Integer = 1000
      Assert.AreEqual(SUM_WITH_IGNORED_FIRST_NUM, parsedSumResult)
  End Sub

  這個是不是比較容易理解呢?當聲明消息消失之后,表達意圖最合適的地方就是測試的名字。 如果你廣泛的使用了它,你將會發(fā)現(xiàn)你不再需要讀測試代碼就能明白代碼測試的目的所在。事實上,你經(jīng)常根本不需要寫任何注釋,因為代碼,特別是那些帶著實例的,他們自己是證明自己的。


  名字包含了三部分內(nèi)容: 測試下方法的名字(解析),測試下的狀態(tài)或者規(guī)則(帶著第一個負數(shù)傳遞一個字符串),以及預期的輸出或者運行情況(剩余數(shù)字的總和以一個正數(shù)的形式返回)。需要注意的是我從名稱中將Test以及Calc這兩個詞刪除。我已經(jīng)知道這是一個屬性的測試因此在此沒有重復此信息的必要。我也知道這是一個在Calc類中的測試因為測試類經(jīng)常是寫給一個特殊類的(這個類也許已經(jīng)被命名為CalcTests)。

  名字也許會很長,但是又有誰在乎呢?它讀起來更像是一個標準英語的句子而且它使得一個新來的開發(fā)者更容易明白測試的內(nèi)容。更是這樣,當這個測試發(fā)生故障時,我們甚至不需要調(diào)試代碼就可以知道問題究竟出在哪里。

 需要注意的是,我已經(jīng)在前面分別實際演示了通過在不同行中創(chuàng)建一個結果變量的方法從聲明操作中進行分解操作。這樣做至少有兩個理由。第一個理由是,你可以為一個變量分配一個可讀性強的名字,它可以包含結果,這樣可以使你的聲明行非常易于理解以及易于讀。第二點是,測試下與對象相反的invocation 可能非常的長,它可能會使你的聲明行延伸出屏幕的邊緣之外,這樣導致測試者向右滾屏。就我個人而言,我認為這個是非常惱人的。

  我在我的測試中使用了很多常量以確保我的聲明讀起來像一本書。在先前的例子之中,你可以讀到聲明中說:“確保分解總數(shù)是與忽略第一個數(shù)后所得總和是相等的! 為你的變量取一個很好的名字能夠在某些程度上彌補對于測試的命名不足。

  當然,有時一個聲明 消息是在一個單元測試中傳遞intent的最好的方法。 一個好的聲明消息始終能夠解釋什么因該會發(fā)生或者什么發(fā)生了而且為什么會出錯。舉個例子來說,“分列應該忽略掉第一個數(shù)字如果這個數(shù)字是個負數(shù)的話”,“分列不能夠忽略掉第一個負數(shù)”,還有“X調(diào)用對象Y標記錯誤”這些都是有用的聲明消息,它們很清晰的描述了結果的情況。

  在你的設置方法中避免部分相關的代碼

  一個<TestInitialize()> 方法是樣例成員變量在測試中使用的一個好地方。你所有的測試,只有在一部分的測試中避免變量。他們可以為測試設置本地變量。如果你創(chuàng)建了部分相關的實例作為類的成員,用來在測試中簡單的避免創(chuàng)建的副本,你應該使用在文章前面解釋的工廠方法,使用部分相關變量使得你的代碼和設置方法缺少易讀性。一旦變量在一個或者每個測試中使用,那么他應該是<TestInitialize()> 方法的一個成員和變量。

  Figure 5 展現(xiàn)了一個擁有兩個成員變量的類的測試。但是他們中的一個(cxNum)只被部分使用。Figure 6 展現(xiàn)了如何在測試中替換代碼從而使它更加易讀的方法。

更多軟考資料請訪問:考試吧軟件水平考試欄目

希望與更多網(wǎng)友交流,請進入考試吧軟件水平考試論壇

  

 

上一頁  1 2 3 4 5 6 7  下一頁
文章責編:yanruijie  
看了本文的網(wǎng)友還看了
文章搜索
軟件水平考試欄目導航
版權聲明:如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。