我寫了一個測試自動化框架。該框架是圍繞對象和動作構建的。一個對象可能是一個文本框。它的動作可能是設置文本,清除,驗證文本,驗證啓用等等。框架獨立於活動,所以我們可以隨着時間添加更多動作,而不必重新固定框架本身。我考慮了兩種行動方法。第一個是使用命令模式。在這種情況下,我將有一個看起來像這樣的接口:
尋找命令模式選擇
public interface IAction
{
void Execute(StringDictionary properties);
}
的問題是,我們最終會得到很多的這些命令類。
public class SetTextAction : IAction
{
public void Execute(StringDictionary properties)
{
}
}
public class ClearAction : IAction
{
{
}
}
public class VerifyTextAction : IAction
{
public void Execute(StringDictionary properties)
{
}
}
public class VerifyEnabledAction : IAction
{
public void Execute(StringDictionary properties)
{
}
}
此外任何共享代碼將需要在又一類。它似乎增加了代碼中的噪聲與信號的比例。
我想出的替代方法是使用實用程序類來執行操作的類型和方法。這最終看起來像這樣:
public class TextboxActions
{
public static void set-text(StringDictionary properties)
{
}
public static void clear(StringDictionary properties)
{
}
public static void verify-text(StringDictionary properties)
{
}
public static void verify-enabled(StringDictionary properties)
{
}
}
這樣的優點,對於文本框代碼都在一起。另外,多個操作共有的任何代碼都可以在同一個類中。不幸的是,這種方法要求我使用反射來「查找」操作方法。這顯然不安全,並且可能很費時。它足夠慢,我添加了一個緩存,所以我不必再次找到相同的動作,但這增加了代碼的複雜性。
這些解決方案都可以工作,但它們都具有不理想的特性。有人可以提出這個問題的另一種方法嗎?
謝謝我結束了這樣的事情。 – 2010-11-27 15:15:19