2012-02-20 9 views
6

基本的に、MVVMでは、コントロールに名前(またはx:名前)を付ける必要がないので、私のコントロールは無名です。CUIT(コード化されたUIテスト)+ MVVM - すべてのコントロールに名前を付ける必要がありますか?

しかし、コード化されたUIテストを見てみると、すべてのコントロールをもう一度やり直す必要があるようです。または、私が読んだことを誤解しただけで、CUITをやるMVVMにやさしい方法がありますか?

+0

コード化されたUIテストは本当に半分焼いています。コード化されたUIテストではコントロールが動作しないコントロールベンダーがたくさんあります。別のテストスイート(TelerikやInfragisticのようなもの)を調べたいかもしれません。 – Jeff

+0

それはCUIT /サードパーティのコントロールの問題であり、AutomationPeerがすべて組み込まれた.NET WPFコントロールではありません。 –

+0

本当ですが、私はまだコード化されたUIテストがUI要素の検索を停止し、再記録する必要がある多くの問題に直面しています。 – Jeff

答えて

3

コントロールのIDを変更する代わりに、System.Windows.Automation.AutomationProperties名前空間からオートメーションIDを追加できます。私は、上記のstojと同じ順序で要素が存在することを期待して、それが非常に苦痛になることをお勧めしたいと思います。

[オートメーションIDを使用して]の記事を参照してください。ここ1は彼のポストからの例です:WPF用

<MyControl AutomationProperties.AutomationId="AnUniqueValue"/> 
protected override string GetAutomationIdCore() 
{ 
    return (AutomationProperties.GetAutomationId(_owner)); 
} 
1

名前が付けられていないコントロールを持つように見えるので、コード化されたUIテストを壊さない変更を加えることは非常に困難です。生成されたコードは、XAMLで記述された順序に基づいて編集可能なテキストボックスを割り当てます。つまり、コードを囲んでいるコントロールを移動すると、コード化されたUIテストが中断されます。

私は検索基準を完全に調査していませんが、名前のないコントロールでコード化されたUIテストを作成するのははるかに複雑であると想定しています。ああ、名前/ x:名前が復活していると思うよ。

4

記録されたテストを使用してコントロールと確実にやり取りする場合は、コントロールの名前またはIDを指定する必要があります。名前がなければ、テストはインスタンスプロパティに依存します。インスタンスプロパティは、名前のついていないコントロールとの関連で名前のないコントロールの場所によって異なります。

アプリケーションが非常に静的な場合は、名前を持たない場合がありますが、コントロールを動かすと破損する可能性があります。インスタンス値が変更され、記録されたアクションが間違った制御で発生する可能性があるため、動的にロードされるコントロールにも問題が発生します。

コントロール名のないアプリケーションに対してCodedUIテストを書くことは間違いありません。これは重大な問題点になり、記録は信頼できません。

関連する問題