2011-05-30 14 views
3

現在、UIテストをCodedUIテストに移行しています。今、私は次のトラブルに直面します:コード化されたUIテストとMessageBoxのトラブル - 検索条件

私のUnitTestでは、自分のUIMapにあるメソッドを2回呼び出します。このメソッドには、MessageBoxウィンドウが開いているかどうかをチェックするフラグメントが含まれており、メッセージボックスの確認またはキャンセルボタンをクリックするかどうかを切り替えるboolean paramがあります。メッセージボックスは決して変更されません(タイトル、テキスト、ボタンを意味します)。

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(); 
    } 
} 

最初の呼び出しは毎回問題なく動作します。 2回目の呼び出しでは、Messageboxがポップアップしますが、テストフレームワークでは見つかりません。

CodedUiTestBuilderがMessageBoxに割り当てる検索条件は、名前(Info)とクラス名(#32770)です。

ここで間違っている可能性のあることについて誰かがヒントを持っていますか? MessageBoxコントロールのアクセシビリティが不足していますか?

よろしく、

セブ

答えて

4

あなたは、あなたのテストメソッドからマップを更新することができます。したがって、部分クラスのメソッドを2回目に呼び出すときは、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

ありがとう、それは私を助けた!なぜ私は前にそれを試していないのだろう... –