給定一個手寫的參數化單元測試,Pex完全自動地分析代碼,來決定相關的測試輸入。其結果就是生成一個有著高度代碼覆蓋的傳統單元測試,另外,Pex還會建議程序員如何去修復所發現的Bug。 |
Pex實際上并沒有減少開發人員多少工作量,他們依然需要手寫那些定義和覆蓋了方法基本行為的單元測試,來確保API和函數符合必要用例和用戶故事的需 求。但是,Pex可被用作一個附加的方法來確保測試充分地覆蓋這些實現的代碼。在方法中識別不確定的行為和錯誤時,這個自動探索式測試工具尤其有用。
和其他大多數生成工具一樣,Pex在確定的環境下使用效果很好。單元測試驅動(TDD)的設計原則是保持方法簡短和可測試,這個原則也讓Pex生成的測試 更為可讀。在實現符合TDD的設計目標時,Pex也是很不錯的工具,比如如果Pex為某方法生成了許多復雜的測試,那么這個方法很有可能需要重構。在方法 是以基礎類型做參數,而不是自定義的對象時,Pex的效果也不錯。
Pex默認集成于Visual Studio 2008和MSTest中,但是Pex的擴展允許下載并支持NUnit、MbUnit或者xUnit.Net。另外Pex還基于擴展反射可管理子協議 API(Extended Reflection managed profiling API)對監測應用程序的集成提供了支持。
需要提醒的是,Pex目前還只是微軟研究院的一個試驗項目,不會像微軟正式產品一樣獲得支持。不建議將Pex作為寫單元測試的首要選擇,但是它的自動測試生成能有效覆蓋邊緣的用例。原文轉自:http://www.anti-gravitydesign.com