接下來抽象出SearchEngine的接口ISearchEngine,并讓SearchEngine實現該接口。其中接口方法包括ExactSearch和BlurSearch方法。將前面的測試代碼作小小的修改,修改后同樣需要在NUnit中運行,保證順利通過:
[Test]
public void TestSearching()
{
ISearchEngine engine = new SearchEngine();
Assert.IsNotNull(engine);
……
}
考察SearchResult類型,該類型的對象應該在整個程序中只保留一個對象,因此,應對此采用單例模式。修改測試代碼:
[Test]
public void TestSearching()
{
ISearchEngine engine = SearchEngine.Instante;
Assert.IsNotNull(engine);
……
}
根據測試代碼修改程序代碼,將SearchResult類型的構造函數改為private,并提供只讀的靜態屬性Instante,以此來獲得單例對象。
僅僅是這樣還不夠的?紤]到搜索的范圍有多種情況,如inte.net,local machine,DB等。SearchEngine類型應該具體化不同類型,并同時實現ISearchEngine接口。例如搜索范圍在internet,測試代碼如下:
[Test]
public void TestInternetSearching()
文章來源于領測軟件測試網 http://www.kjueaiud.com/