SmartAssistor assistor = new SmartAssistor();
Assert.IsNotNull(assistor);
assistor.Search(control.Categaries);
assistor.Store();
}
此時,我發現在寫Search()和Store()方法的斷言時,有些問題存在。這兩個方法返回的結果應該是什么?是布爾值嗎?那么搜索得到的結果呢?存儲后形成的文件呢?對于用戶而言,是否只需要這兩個行為呢?
仔細分析,我認為,Search()和Store()方法返回布爾值是可行的,但Search()還應該返回搜索結果。Store()方法也應該指定存儲的路徑和文件的格式。而用戶不僅僅需要搜索和存儲,同時還應該提供顯示的功能。所以,上面的測試代碼需要完善:
[Test]
public void TestSmartAssistor()
{
SmartAssistor assistor = new SmartAssistor();
Assert.IsNotNull(assistor);
SearchResult result = new SearchResult();
Assert.IsTrue(assistor.Search(control.Categaries,out result));
Assert.IsTrue(assistor.Store(result,@”D:\Smart Assistor\”,” result.xml”));
assistor.List(result);
}
此時根據測試代碼寫出的程序,應該說就具備個人智能助理的雛形了(所謂智能,還應具備自動搜索,自動匹配,自動分類等諸多功能,本文只是根據該項目提出TDD的一些觀點,因此這些功能省略)。
二、通過TDD進行重構)
“發現價值”的過程遠遠沒有結束。通過測試代碼,我們從客戶的角度來考慮,會發現一些問題。在已經實現的代碼中,SmartAssistor類型實現了Search,Store和List的功能。但這些職責是否真的應該由它承擔呢?表面上來看,是這樣的。然而根據OO的思想來看,這個SmartAssistor所承擔的責任是否太多了?它和搜索的結果、顯示的方式耦合度是否太緊密了?這個設計將實現抽象出來了嗎?這些都應該是我們考慮的重點?紤]的時機,可以是設計之初,也可以是重構之時。
文章來源于領測軟件測試網 http://www.kjueaiud.com/