MVVMパターンを使用してwpf + DevExpressで開発されたアプリがあります。ビューモデル レベルで MStest を使用して Specflow を実装する必要があります。
誰もこれを試しましたか?ポインタはありますか?codedUI はビューモデル レベルで有効ですか?
MVVMパターンを使用してwpf + DevExpressで開発されたアプリがあります。ビューモデル レベルで MStest を使用して Specflow を実装する必要があります。
誰もこれを試しましたか?ポインタはありますか?codedUI はビューモデル レベルで有効ですか?
この質問を読んだとき、私は2つの考えを持っていました。
まず、UI を介してすべてを自動化する必要があるかどうかを考えてください。MVVM のようなアーキテクチャを使用すると、UI の下でアプリケーションを実行し、テストの自動化を最大限に活用する絶好の機会が得られます。たとえば、ViewModel に対してステップ定義を記述します。UI に対するテストは、脆弱なテストを作成するリスクを容易に冒します。UI は、非常に頻繁に変更されるほとんどのアプリケーションの一部です。UI にヒットするテストは、何らかの形でこれに対処する必要があります (これについては後で詳しく説明します)。
第 2 に、UI に対して自動化する必要があるものについては、UI オートメーション ライブラリの上にある優れたオブジェクト指向の抽象化であるWhiteの使用を検討してください。私はそれを広範囲に使用し、気に入っています。
自動化では、ドライバーパターンなどを使用して、実際の自動化を抽象化するようにしてください。これを行う簡単な方法は、問題の画面/ページと対話するためのプロパティとメソッドを持つ画面/ページ オブジェクトを作成することです。その後、ステップ定義はこれらのラッパー オブジェクトを使用します。
ステップ定義を薄くし、ラッパー オブジェクトを太くします。MVC パターンのコントローラーに少し似ています。詳細はこちら
これがお役に立てば幸いです
まあ、私はそれを試したことはありませんが、私はそれで何か問題があるとは思いません。specflow を使用して、「ユーザーがアバウト ボタンを押した」という 1 つのことを行うメソッドを作成すると、コードは次のようになります。
[Given(@"The user presses the about button")]
public void TheUserPressesTheAboutButton()
{
this.UIMap.PressAboutButton();
}
すべてのメソッドを作成するためにいじる必要があるかもしれませんが、大したことではありません。ここに簡単なガイドがあります。不具合の可能性があるのは、CUIT ビルダーがそれらを見つけることができるように、コントロールの名前と識別です。
はい。それはかなりうまくいきます。最大の課題は、文の構造と Given/When/Then ステートメントを実際に定義して、一貫性があり再利用できるようにすることです。そうしないと、単一のメソッドに対してタグと 5 ~ 10 個の指定が行われることになります。本当に維持できません。
MVVM やその他のビジネス コンポーネントの単体テストには Specflow を使用しました。Given ステートメントは、基本的にモック データをセットアップしてから、テストを実行します。
Given I have created a database context
And it contains the following Books
|ISBN | Author | Title |
...
また、TFS による自動テストの機能テスト (エンド ツー エンド) にも specflow を使用しました。データベースとサーバーが (実際のデータまたはテスト データを使用して) 展開され、そのサーバー/データベースに対して機能テスト スイートが実行されます (データの作成、データの変更など)。