私はテストオートメーションフレームワークを作成しました。このフレームワークは、オブジェクトとアクションを中心に構築されています。オブジェクトはテキストボックスです。そのためのアクションは、set-text、clear、verify-text、verify-enabledなどのようなものかもしれません。フレームワークはacitonsから独立しているので、フレームワーク自体を再スムーズにすることなく時間をかけてアクションを追加できます。私はその行動に対して2つのアプローチを考えた。最初は、コマンドパターンを使用することでした。問題は、我々は多くので終わるだろうということです
コマンドパターンを検索する代わりに
public interface IAction
{
void Execute(StringDictionary properties);
}
:この場合、私はこのようになりますインターフェイスを持っているでしょうこれらのコマンドクラス。
public class SetTextAction : IAction
{
public void Execute(StringDictionary properties)
{
}
}
public class ClearAction : IAction
{
public void Execute(StringDictionary properties)
{
}
}
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)
{
。さらに、複数のアクションに共通するコードはすべて同じクラスに含まれます。残念ながら、このアプローチでは、リフレクションを使用してアクションメソッドを「見つける」必要があります。これは明らかにタイプセーフではなく、時間がかかることがあります。私はキャッシュを追加したので、同じアクションを2回見つける必要はありませんが、コードの複雑さが増します。
どちらの解決策も機能しますが、どちらも望ましくない特性を持っています。誰かが提案できるこの問題に対する代替アプローチがありますか?
ありがとうございました。 –