2011-05-30 65 views
3

我正在將我的UI測試移動到CodedUI測試。現在,我面臨以下麻煩:編碼UI測試和MessageBox的問題 - 搜索條件

在我的UnitTest中,我調用兩次位於我的UIMap中的方法。該方法包含一個片段,用於檢查MessageBox窗口是否處於打開狀態,並具有一個布爾參數,用於切換是否單擊消息框中的確認或取消按鈕。 Messagebox永遠不會改變(意味着它的標題,文本,按鈕)。

public void MyUiMethod(bool p) 
{ 
    //...variable initialization... 
    ApplicationUnderTest app = ApplicationUnderTest.Launch(@"some.exe"); 
    try 
    { 
     //... get to the point that triggers the MB to show... 
     Assert.AreEqual(true, uImessageBoxWindow.Exists); 
     if (p) 
      Mouse.Click(uIConfirmButton, new Point(39, 16)); 
     else 
      Mouse.Click(uICancelButton, new Point(49, 8)); 
    } 
    finally 
    { 
     app.Close(); 
    } 
} 

第一次調用每次都沒有任何問題。 在第二次調用期間,彈出消息框,但不能被測試框架找到。

CodedUiTestBuilder分配給MessageBox的搜索條件是其名稱(Info)和類名(#32770)。

有沒有人有什麼可能會出錯的提示? MessageBox控件中是否存在一些可訪問性?

問候,

勒布

回答

4

可以刷新從測試方法地圖。所以,當你第二次調用部分類中的方法時,只需要像UIMap MapName = new UIMap();然後,這將刷新地圖,你可以再次調用你的窗口沒有刷新問題。

public void MyUiMethod(bool p) 
{ 
    UIMap MapName = new UIMap(); 

    //...variable initialization... 
    ApplicationUnderTest app = ApplicationUnderTest.Launch(@"some.exe"); 
    try 
    { 
     //... get to the point that triggers the MB to show... 
     Assert.AreEqual(true, MapName.uImessageBoxWindow.Exists); 

     UIMap MapName = new UIMap(); 
     if (p) 
      Mouse.Click(MapName.uIConfirmButton, new Point(39, 16)); 
     else 
      Mouse.Click(MapName.uICancelButton, new Point(49, 8)); 
    } 
    finally 
    { 
     app.Close(); 
    } 
} 

希望這會有所幫助。

+0

非常感謝,幫助我!不知道爲什麼我以前沒有嘗試過...... – 2011-07-06 07:11:16