亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

依賴于數據的工程如何進行單元測試?

依賴于數據的工程如何進行單元測試?

慕田峪9158850 2019-04-07 11:18:36
做一個項目勢必要進行單元測試以保證程序的健壯性,以便保證版本迭代時功能正常。但是如果一個程序(如CMS等)本身就是依賴于數據庫的,應該如何在保證不會破壞數據庫的情況下進行單元測試呢?舉例:訪問?id=1的頁面,先查詢sqlSELECT*FROM`data`WHERE`ID`=1,然后將其賦值給$data->ID、$data->Title這些屬性;要保證這些屬性的值正常。然后,根據一些信息算出$data->Hash,如$data->Hash=md5($data->ID),這些計算的值也要正常。接著,刪除id=1的文章,要sqlDELETEFROM`data`WHERE`ID`=1,必須保證ID所在行被刪除。再其次,后臺發布一篇文章,必須使得數據庫內多出ID=2,內容為設定值的文章。但是HTML代碼內容不一定要相同,可以允許諸如多余的空格、換行。還需要模擬XML-RPC協議發表一篇文章。像以上的內容,應該如何進行單元測試呢?知乎同名問題:http://www.zhihu.com/question/28278690
查看完整描述

2 回答

?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

用單獨的數據庫運行測試,每次測試開始前都清空數據庫,并重新生成測試數據。
另一種做法是每次生成測試數據的時候記錄下來生成的數據的ID,然后在完成測試后刪除本次生成的數據,而不是每次都清空數據庫。這種方案比較適合既需要自動測試,又需要手動測試的情況,自動測試不會導致手動測試時添加的數據被刪除。
測試最好別依賴于具體的值(比如你的例子的ID=1),最好用單獨的函數來創建每一條測試數據(比如generateAccount和generateArticle),這些函數返回創建出來的數據的ID,否則如果硬編碼ID的話,在添加或移除測試的時候會很麻煩。
                            
查看完整回答
反對 回復 2019-04-07
  • 2 回答
  • 0 關注
  • 331 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號