2

「強化された」コンボ ボックスの望ましい機能は、クイック検索メソッドです。コンボボックスの各項目には ToString() メソッドがあり、ドロップダウン リストに表示できます。ドロップダウン リストの項目をクリックすると、コンボボックスのオブザーバーに選択が通知されます。

また、コンボボックスに入力されたテキストが変更されるたびに、それまでに入力されたテキストを含むドロップダウン リスト内のすべての項目で構成される「候補」のリストが生成されます。Enter キーを押すと、そのリストの最初の候補に移動し、Enter キーを繰り返し押すと、リストが循環します。

私は ComboBox から派生してこの機能を実装しました - 機能的にはまだコンボボックスが残っているので、これは理にかなっていると思いました.この「QuickFind」機能が追加されているだけです. ただし、候補リストを作成して循環させるロジックは単純ではありますが、完全に自明というわけではないため、いくつかのテストが必要です。

ただし、ここに示すように、ComboBox を作成して、追加した追加のルーチンを実行するだけでは、ComboBox をテストするのはそれほど簡単ではないようです。同じように動作するには、フォーム上に存在する必要があります。アプリケーションで。これは、単純なコンボ ボックスへの単純な追加をテストするには、かなりの労力を要します。

ただし、候補を循環するコードは私のアプリケーションに固有のものではありません。任意の数のコンテキストで使用できる一般的なコントロールを作成しました。唯一の要件は、コンボボックス内のオブジェクトに ToString() メソッドがあることです。とにかく、通常のコンボボックスに入るオブジェクトに課されるのと同じ制限であり、C# .NET によって保証されています。

では、テスト容易性を念頭に置いて、強化された機能をどこに配置しますか?

4

1 に答える 1

1

あなたが参照する投稿と同様に、ロジックをGUI要素から分離することもここでの解決策です。

ComboBox の DataSource にデータバインドできる項目のリストを公開するコントローラーのようなクラスの使用を検討する必要があります。コントローラ自体がこのリストを維持する責任があります。

したがって、ComboBox に文字を入力するたびに、コントローラーの関数を呼び出します。たとえば、UpdateList(string typedString) としましょう。このようにして、リストを「候補」で埋めるロジックを分離しました。

これで、それぞれが異なる引数で UpdateList() を呼び出し、後でアイテムのリストを検査する多数のテストを簡単に作成できます。テストを行うために GUI を使用する必要はありません。アルゴリズム自体をテストするだけです。

于 2009-01-28T10:17:26.567 に答える