如何利用 PEX 讓 VS 2010 可以自動產生 Unit Test ( MSDN 專用 )
以前我們的程式邏輯越來越複雜時,或是有許多判斷條件時
Unit Test 就要寫多種不同的條件,才能得到完整的測試
就算是自動產生範本,還是要額外寫 6 種不同的 UT ,更何況是成千上萬的 Method
測試涵蓋率 才 25 % ,另外 還有 75 % 的程式都沒有被測到
那麼是不是還有更快的方法??
難道到說一定要用 Copy & Paste ?然後再一個一個改?
其實,是可以用 PEX 外掛套件啊!
PEX 是 Visual Studio 的 Unit Test 外掛套件
連寫 UT 都省了!馬上讓你的 白箱測試 瞬間到 100%
對應測試項目的名稱 以及 Test Framework ( 也有支援 NUnit )
可以在 Pex Exploration Results 看到所有的測試結果
PEX 會依您的程式碼中的判斷邏輯,動態產生「測試條件」
只要邏輯改變 裡面的 UT 也會跟著改 ( 要重新執行 PEX )
當然,若每次程式碼改,而 UT 也會同步改 那怎麼驗證程式碼到底對不對
所以,只要確認這些 動態產生的 UT 是正式的 測試項目
就要將這些轉成 VS 2010 的 Unit Test
批次選擇 UT 後,按下右邊的「Promote the select generated unit test」
回到「測試清單」後就可以看到 剛剛選擇的 UT 已經加入到清單當中了 ( 記得要按下重新整理 )
重新執行所有 UT
可以看到測試涵蓋率達到 100% 了!這個方式可以大幅縮短 寫 UT 的時間!非常方便
而且,只要程式邏輯不是在「資料庫」中,這個方式都是非常實用的
比如說是 使用者登入 性質的功能 , PEX 就不太適合 。
另外,即使您的程式碼重構
PEX 也可以幫你正確地分析出來
現在就多了一個 Exception 項目
第二次重構
可以看到 它的 UT 數量又變了
而 PEX 為什麼沒有再把 6 種不同的條件納進來?
因為 PEX 的分析思維是 Mock 隔離。
所以,後續的 UT 責任會落在 ClassLibrary2.Class1 中
寫 Unit Test 太花時間??
就用 PEX 來解決吧!
這個套件是 可以從那裡拿得到??
請到 MSDN 訂閱就可以下載的到 ( 記得選 英文項目 )
參考