2013-04-03 11 views
8

私は、SharePoint 2010サイトでVisual Studio 2010でコード化されたUIテストを実行しようとしています。 SharePoint内の特定のファイルがSilverlightアプリケーションを別のウィンドウで起動します。これを実行するすべてのSilverlightプロジェクトで、SilerlightUIAutomationHelperアセンブリを参照として追加しました。それが問題になることはできませんので、私はSilverlightの5.0を実行しているコード化されたUIテストSilverlightUIAutomationHelperアセンブリが見つかりません

No Silverlight controls were detected. Verify that the application under test 
is built using Silverlight assemblies with a version of 4.0 or greater and that 
a reference to the Microsoft.VisualStudio.TestTools.Extension.SilverlightUIAutomationHelper.dll 
assembly has been added to the project. 

:これは私はその中のアクションを記録できるようにする必要がありますが、私は私のSilverlightアプリケーションの内部で記録しようとすると、エラーメッセージをポップアップ表示します。また、SilverlightUIAutomationHelper dllがxapパッケージに入っていることを確認しました。

私は正常にこの拡張子を持つSharePointの2013/Visual Studioの2012年にこれらのアクションを記録することができました:なぜこれが起こっているhttp://visualstudiogallery.msdn.microsoft.com/28312a61-9451-451a-990c-c9929b751eb4

任意のアイデア?それを修正するために私は何ができますか?

+0

リンク先の拡張機能ページで推奨されているように、最近のInternet Explorerを使用していますか? – jv42

+0

@ jv42いや、私はIE8&9でこれを試しました – tnw

+0

コード化されたUIテストは奇妙です。銀色のライトコントロールを手動でクリックしてみてください。 –

答えて

4

Silverlight 5でコード化されたUIテストを行うには、ここからコード化されたUIオートメーションヘルパーを更新する必要があります。Visual Studio Gallery: UI Test Plugin for Silverlight VS2010に付属していますが、

SL5は少し異なって実装されており、コード化されたUIテストを壊したので、devsにVS2012と新しいUI Automation Plugin(あなたが発見したように)に切り替えるように促しました。

UITestPluginForSilverlight.msi実行可能ファイルをインストールしたら、プロジェクトのSilverlight部分(既に持っているもの)でこれらのアセンブリを参照する必要があります。

私が覚えている限り、コード化されたUIテストがVS2010で壊れましたが、VS2012で動作する理由は、テストレコーダーによって生成されたSL5およびSL4 UIMap.designer.csファイルが各その他。

SL4レコーディングSL4オートメーションヘルパーで生成されたものは、AutiomationHelperのSL5バージョンでは機能しません。しかし、SL5 Autiomation Helperは、VS2012によって録音されたものであれば、SL4録音にも対応します。

これを詳しく説明します。レコーダーを使用すると、UIMapファイルが作成されます。

  1. 記録されたすべてのメソッドのXMLリスト部分クラスの背後にあるコード生成
  2. デザイナー:マップファイルは、それへの3つの部分を持っています。
  3. ユーザーの部分クラス。

デザイナーが生成したコードビハインドファイルを調べると、実際には、レコーダーがコントロールを見つけてそれらとやりとりするためのコードが大量に生成されていることがわかります。

各コントロールについて、レコーダは、対応するテスト/インタラクションオブジェクトのインスタンスを宣言します。

これらのオブジェクトを宣言するとき、レコーダは検出可能な/検索可能なプロパティの束を定義します。次回再生が実行されるときに、これらのプロパティが使用され、実際のコントロールを見つけるために使用されます。

また、すべてのコントロールには親があります。したがって、レコーダーは検出されたコントロールごとに親のUI要素を指定する必要があります。次のようにSL4およびSL5のために両親は以下のとおりです。

  • ブラウザウィンドウ
  • HTMLページ
  • 本部(Silverlightのランタイムを保持)
  • SLオブジェクト(SLランタイムプラグイン)
  • メインSL UIエレメント(通常squigly buzy指標)
  • ナビゲーションフレーム
  • 内部ページ
  • コントロール

コンストラクタ:

  1. 親コントロール/ Interactionオブジェクト

検索プロパティ:

  1. ページタイトル:ブラウザのウィンドウタイトルによってレンダリングされる合計文字列。
  2. インスタンス番号:(リストの1から始まる...奇妙である)
  3. コントロールID:(名前またはxで定義された名前のXAML属性)
  4. 表示名:これは/コンボボックスのあやふやですリスト要素がそのアイテムのインスタンス番号と組み合わせコンボボックス/リスト要素アイテムにレンダリングされる何らかの組み合わせて 作品として:例えば:

二つのアイテム、各名前付き「リスト項目」のコンボボックス次の表示名で検出される可能性があります。

"リストアイテム:1"および "リストアイテム:2"

  1. 検索属性の組み合わせと並べ替え(あなたはそれらを参照できます)。

ストーリーが短いので、レコーダーによって生成される実際の相互作用オブジェクトはSL4とSL5では異なります。つまり、UIMap.designer.csを1つ取り、別のUIMap.designer.csと交換することはできません。テストフレームワーク(およびUIMap.designer.csで使用される関連する相互作用オブジェクト)は、バイナリ互換ではありません。あなたの再生がうまくいかない理由です。

関連する問題