0

私は現在、1年前に開始されたプロジェクトの新人です。

このプロジェクトでは、C#、WPF、PRISM (CAL)、Entity Framework、LINQ などを使用しています。アプリケーションは、MVVM パターンを使用して行われます。

単体テストはいくつかありますが、機能テストを依頼されたのは、すべてのコンポーネントを一緒に使用したときにほとんどのバグが見つかったためです。

MSTEST プロジェクトの作成を開始しました。私の目標は、アプリケーション バックエンド全体 (モデルとビューモデル) を開始し、UI イベントをシミュレートし、1 つ以上のビューモデル プロパティにアクセスするモデルの変更を確認することでした。

私の最初のゲストは、エンティティ コンテキスト (モデル) を作成し、すべての PRISM モジュールを初期化し、ビューモデルでイベントの公開を開始して、モデルを変更し、同じまたは他のビューモデルで結果を確認することでした。そうしなければならなかった :

  • プリズム Boosttrapper クラスをオーバーライドする
  • 簡単なアプリケーションを作成します (MSTEST では System.Windows.Application.Currentnull のように見えるため)。からクラスを派生させましたSystem.Windows.Application

UnityContainer を使用して、すべてのインターフェース実装にアクセスできます。私が今抱えている問題は、が機能してIEventAggregatorいないことです。イベントは発生しません。プリズムモジュール間でイベントを発生させたいので、イベントアグリゲーターをモックしたくありません (ユニットテストではなく、機能テストを行っています)。

Dispatcherとをいじって動作させる方法を見つけましたが、失敗したように見える にDispatcherFrame在庫があります。RegionManager

私の質問は: 必ずしもユーザー インターフェイスを表示せずに機能/統合テストを行うより良い方法はありますか?

4

1 に答える 1

0

機能テストを行っている場合は、ユーザー インターフェイスを表示する必要があります。たとえば、一部の UI デザイナーがテキストボックスをチェックボックスの上に配置することを決定し、チェックボックスをクリックできなくなった場合、これは機能テストで取り上げる必要があります。

Visual Studio で UI テストをコーディングすると、WPF でいくつかの問題が発生します。主に、コード化された UI マッピングでは簡単に到達できないコントロールです。しかし、それとは別に、うまく機能し、テストを簡単にビルドでき、TFS ビルド エージェントおよび MSBuild とうまく統合できます。

于 2011-05-02T17:29:52.720 に答える