2009-08-10 15 views
3

私は、MVVMのユニットテストビューモデルと、テスト自体がビューモデルのコンシューマであり、viewModelとモデルの機能をテストする方法についていくつかの記事を見てきました。しかし、ビュー(UI)をテストして、ビューモデルに適切に接続されていることを確認する方法については不明な点があります。私は、例えば、これまでに行ってきたVMを効果的にテストしているので、何かがDBに書き込まれていることを確認するために、ボタンを押したというテストを書いてはいけません。MVVMでどのようにビューを適切にテストしますか?

たとえば、ボタンが特定のコマンドに接続されていることを確認するテストを作成できます。したがって、誰もそのボタンのコマンドに沿って来て、そのボタンのコマンドを削除することを防ぎ、もはや機能しなくなります。

これは可能ですか?ありがとう。

+0

IMOあなたのUIロジックが、 MVVM、MVP、MVCなどのパターン私は常に、一般的な受入れテスト以外でUIをテストすることは重要ではないと感じています。 –

+0

Chris、UIテストなしどのような変更を行っても、既存の機能が損なわれていないことを確認できますか?ボタン上のコマンドを削除して、もはやそれを保存しないようにする。 – HAdes

+0

とにかくUIをテストしようとしていましたね。視覚的、審美的な不具合については?そうすることで間違った答えや誤った答えが出るでしょう。私の主張は、UIが揮発性で、フィールドが移動して追加され、プレゼンテーション形式が変更される傾向があるということです。そのテストを自動化することは本当に厳しいものであり、それらのテストを維持することはさらに困難です。ときには、弾丸と手作業による回帰テストを噛むだけでよい場合もあります。 – djna

答えて

0

私は生のUIを自動化するのに役立つTelerik(テストのアート)から何かがあると思います。 http://www.artoftest.com/products/webaii.aspx 今はWPFではなくSilverlightです。うまくいけば、少なくともその出発点です。

+0

それは良く見えますが、私の質問には答えません。私は具体的には、バインディング、コマンドなどのようなものをテストする方法をとっています。単にUIを実行して最終結果をチェックするだけでは、VMまたはモデルのテストに興味がないので、ビュー自体は十分ではありません。 VMまたはモデルは将来変更される可能性がありますが、ビューテストを変更する必要はありません。 – HAdes

+0

ええ、十分な公正、その良い質問、私は一種の日付を便利にそのビットを無視していた。 ASIDE:作業の量に応じて、パーサー/バリデーターを作成して、モデル内のすべてがビューに再表示されるようにすることができます。確かにあなたの探しているものではありませんが、良いバリデーションチェックになります。 –

+0

GUIテストに白を使用してみてください。 http://www.codeplex.com/white –

2

しかし、もし誰か(もしうまくいけばデザイナー)がButtonMenuItemに変更したいのであれば?あなたのテストは中断し、修正する必要があります。 MVVMの大きな利点の1つは、開発者があまりにも多くの前後を必要とせずに、インターフェイスを手配して再配置できることです。 UIに対する単体テストを書くことはその恩恵を受ける。

私はここで悪魔の主唱者を演奏しています。私は、UIのテストが完全に役に立たず、決して誰のコードベースの場所も持っていないと言っているわけではありません。私が言っていることは、リターンは減少しており、あなたはある問題を別のものと交換しているかもしれないということです。

「分離」で実際にビューをテストする方法については、 。 。私が考える最も簡単な方法は、モック・サービスを注入したビュー・モデルを使用することです。ビューモデルはサービスロケータを使用して依存サービスを取得することができるため、単体テストでダミーサービスを注入できます。名前付き要素の参照、ビジュアルツリーのクロール、およびWPF UIオートメーションAPIの組み合わせを使用して、さまざまなビジュアル要素にプロパティが期待どおりに設定されていることを確認できます。

0

私はこれが古い投稿だと知っていますが、私は現在、同じ問題を抱えています(また、誰かがユニットテストの役に立たない方法を唱える前に、標準や実践の一部として医療機器業界の私たちのものとして)。私は、カスタムインターフェイスを使ってサービスを登録し、テストコードにアクセスできるようにするこの記事を見つけました。私はまだ記事をより良く読むよう努力していますが、これはもっと明確な答えを得るために少なくとも助力者になることを願っています: http://blog.zuehlke.com/en/mvvm-and-unit-testing/

+0

答えに記事の要点を要約する必要があります。リンクのみの回答は低品質とみなされます。とりわけ、リンクは死ぬ傾向があるためです。 –

関連する問題