0

ホワイトフレームワークを使用してWPF.NET4アプリケーションをテストしようとしています。XAMLには、次のように宣言されたハイパーリンクがあります

<Hyperlink Command="{Binding Path=CmdOpenFile}" Name="hlOpenFile" >
    <TextBlock Text="Load file.." Name="txtLoadFileLabel" />
</Hyperlink>

CmdOpenFileは、OpenFileDialogを作成して表示します。アプリケーションを手動でテストすると、期待どおりに機能します。このハイパーリンクに対応するAutomationElementを取得するWhiteを使用して単体テストを作成し、次のリンクをクリックしようとします。

AutomationElement automationElement = someParentUIItem.GetElement(SearchCriteria.ByAutomationId("hlOpenFile"));
Hyperlink openFileLink = new Hyperlink(automationElement, window.ActionListener);
openFileLink.Click();

このテストを実行すると(アプリケーションが起動し、マウスポインターがこのハイパーリンクに移動し、それだけです)、ファイルを開くダイアログが表示されません。これの理由は何であり、どのように修正することができますか?

4

1 に答える 1

2

私はいくつかの解決策を見つけたようです-それが最良の解決策であるかどうかはわかりませんが、それは機能します:

AutomationElement automationElement = someParentUIItem.GetElement(SearchCriteria.ByAutomationId("hlOpenFile"));
var invokePattern = automationElement.GetCurrentPattern(InvokePattern.Pattern) as InvokePattern;
invokePattern.Invoke();

PS:

上記の解決策は私をさらに一歩進めましたが、ダイアログを開くとコードの実行が停止するブロッカーに直面しました。別のスレッドで実行された場合でも、ダイアログが手動で閉じられるまで、このダイアログを見つけようとして停止します。この質問の助けを借りて、私はついに何が問題であったかを見つけました。Win7x64を使用しています。アプリケーションはx86用にビルドされていますが、AnyCPU用にテストされています。テストターゲットをx86に変更し、x86 nunitコンソールから実行すると、テストの実行が期待どおりに機能します。

于 2012-10-04T20:09:44.353 に答える