接下来抽象出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()
文章来源于领测软件测试网 https://www.ltesting.net/