2016-06-27 16 views
0

コード化されたUIマップを作成するときに、以下のように起動する必要のあるアプリケーションを指定します。プログラム化されたコード化UIテストでWPFコントロールが見つからない

Coded UI Test Map

Iは、以下のテストを実行すると、コード化されたUIテストは、私は指定していコントロールを見つけることができました、通過します。この場合は、ListViewItemです。

[TestMethod] 
public void UserOpensAnExistingDiary() 
{ 
    this.UIMap.OpenExistingDiary(); 
} 

public void OpenExistingDiary() 
{ 
    #region Variable Declarations 
    WpfListItem uIPenAppsLogicModelsDiListItem = this.UIPENWindow.UIDiariesGroup.UIItemList.UIDiaryGroup.UIPenAppsLogicModelsDiListItem; 
    WpfWindow uIDiaryEditorWindow = this.UIDiaryEditorWindow; 
    #endregion 

    // Launch '%LOCALAPPDATA%\Pen\app-5.0.6018.18517\Pen.Apps.Desktop.exe' 
    ApplicationUnderTest penAppsDesktopApplication = ApplicationUnderTest.Launch(this.OpenExistingDiaryParams.ExePath, this.OpenExistingDiaryParams.AlternateExePath); 

    // Double-Click 'Pen.Apps.Logic.Models.DiaryModels.Diary' list item 
    Mouse.DoubleClick(uIPenAppsLogicModelsDiListItem, new Point(76, 72)); 

    // Wait for 1 seconds for user delay between actions; Click 'Diary' window 
    Playback.Wait(1000); 
    Mouse.Click(uIDiaryEditorWindow, new Point(590, 25)); 
} 

私はLaunch UIアクションを削除し、プログラムでテストがListViewItemを見つけることができないアプリを起動した場合。唯一の違いは、私がLaunchアクションを取り除いて、テストに次のコードを追加することです。そのため、起動されたウィンドウで初期化されます。

[TestInitialize] 
public void Setup() 
{ 
    string appPath = ApplicationPath.GetApplicationPath(); 
    var app = ApplicationUnderTest.Launch(appPath); 
} 

これがなぜこのようになるのでしょうか?

答えて

1

あなたが提供した例は、何が効果的で何が効果がないか混乱しています。また、UIマップを使用すると、何が起こっているのかを見ることが非常に困難になります。失敗しているテストのいずれかの方法を追加し、テスト対象のアプリケーションが失敗した場合には、コンテナを制限する検索として使用されていないということでしょう

this.UIPENWindow.UIDiariesGroup.UIItemList.UIDiaryGroup.UIPenAppsLogicModelsDiListItem 

私の勘のためのUIマップコードを含めてください。ここでのポイントは、それはあなたの現在のケースで何が起こっされていないように思われるコンテナのようリスト項目が立ち上げたウィンドウを取得していることである

[CodedUITest] 
public class TestingClass 
{ 
    WpfWindow containingWindow; 
    [TestInitialize] 
    public void Initialize() 
    { 
     this.containingWindow = ApplicationUnderTest.Launch(appPath); 
    } 

    [TestMethod] 
    public void Test1() 
    { 
     WpfListItem toClick = new WpfListItem(this.containingWindow); 
     // look in the UI map to see what it is doing for search properties 
     // and take the simplest sub-set that makes sense 
     toClick.SearchProperties.Add("AutomationId", "SomeId"); 

     Mouse.Click(toClick); // do not need point, typically 

     /* 

     //You may need to include more levels of searching, 
     //but you can see what you need from the UI Map 

     WpfTable table = new WpfTable(this.containingWindow); 
     table.SearchProperties.Add("AutomationId", "myTableId"); 

     WpfListViewItem itemToClick = new WpfListViewItem(table); 
     itemToClick.SearchProperties.Add("Name", "Some name"); 
     */ 
    } 
} 

:私はどうなるのか

は、のようなものに変更しています。

+0

私の例には、テストとUIマップで生成されたコードが含まれていますが、追加のコンテンツを見逃しましたか?私はあなたの例を試し、私はより良い運があるかどうかを見ます。私はフィードバック/コメントを感謝します! –

+0

これらのプロパティのコードは含まれていません:WpfListItem uIPenAppsLogicModelsDiListItem = this.UIPENWindow.UIDiariesGroup.UIItemList.UIDiaryGroup.UIPenAppsLogicModelsDiListItem; WpfWindow uIDiaryEditorWindow = this.UIDiaryEditorWindow; – MPavlak

関連する問題