1

複雑な動作のほとんどが、ユーザーが操作するスプレッドシートのイベントハンドラーとして実装されているC#プロジェクトがあります。

コードのテストには精通していますが、スプレッドシートの複雑な動作をテストする方法がわかりません(行の追加と削除、ユーザーがセルの値を変更したときのサードパーティコンポーネントの呼び出しなど)。コード化された動作がスプレッドシートの動作と絡み合っているだけでなく、プログラムで値を変更したときにスプレッドシートのイベントを発生させることもできません。実際には別のクラスに分類されていないので、何をモックするかわかりません。

WinForms用のSeleniumまたはこれを行う他の方法はありますか?

4

1 に答える 1

0

他の誰かがこれに遭遇した場合に備えて、私は基本的にアダプターパターンまたはメディエーターパターンであるものを使用することになりましたあなたがそれをどのように見るかに応じて。各スプレッドシートは、スプレッドシートをフォーマットしてコードと通信するアダプターによってラップされます。このコードは、メディエーターにいくつかのドメインオブジェクトを表示するように指示し、適切なセルに入力して適切なイベント(CellEndEditなど)をトリガーします。ユーザーがスプレッドシートを変更した後、メディエーターは結果のドメインオブジェクトをコードに渡します。単体テストでは、ドメインオブジェクトを正しく読み書きできること、およびコードが実行されているときに正しいイベントをトリガーできることを確認します。他のテストでは、ユーザーが適切なデータを適切なセルに配置すると、結果のドメインオブジェクトに正しいデータが含まれることを確認します。余分な作業ですが、動作をスプレッドシートではなくメディエーターに依存させることが可能になりました。

于 2012-08-22T16:35:51.553 に答える