我写了一个测试自动化框架。该框架是围绕对象和动作构建的。一个对象可能是一个文本框。它的动作可能是设置文本,清除,验证文本,验证启用等等。框架独立于活动,所以我们可以随着时间添加更多动作,而不必重新固定框架本身。我考虑了两种行动方法。第一个是使用命令模式。在这种情况下,我将有一个看起来像这样的接口:
寻找命令模式选择
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