2010-11-25 48 views
2

我有一個2010編碼UI測試,對網站執行一些操作。我能夠將數據源添加到「測試方法」,該測試方法每個記錄循環整個方法一次。如何添加數據源到UIMap方法而不是測試方法(VS 2010編碼的UI測試)

但是,我真正想要做的只是循環測試的一部分,這只是UIMap中的一個單獨的記錄方法。

假設的測試方法看起來是這樣的:

//[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\TestCommunities.xml", "Community", DataAccessMethod.Sequential), DeploymentItem("Tests\\WebTests\\DataSources\\TestCommunities.xml"), TestMethod]   
public void LoginCreateCommunities() 
    { 
     this.UIMap.LoginAdmin(); 
     //this.UIMap.CreateCommunityParams.UIItem0EditText = TestContext.DataRow["CommunityName"].ToString(); 
     this.UIMap.CreateCommunity(); 
     this.UIMap.LogoffClose(); 
    } 

這只是UIMap.CreateCommunity(),我想循環的數據源。我不希望所有3種方法都在數據源中執行每條記錄,這是將數據源附加到測試方法(上面註釋的部分)時發生的情況。

有沒有辦法實現我在這裏要做的事情?

謝謝。

+0

讓我看,我會問這個法子......沒有(我想使用一些內置的CUIT魔術),我能夠通過數據源(而不是整個編碼測試方法)僅循環編碼UI測試方法的部分。 – Jeff 2010-11-26 21:50:18

回答

0

您必須使用ClassInitialize和ClassCleanup方法。您將其放置在#區域底部的其他測試屬性區域。所以對你來說會是這個樣子:

#region Additional test attributes 

    [ClassInitialize] 
    static public void ClassInit(TestContext context) 
    { 
     Playback.Initialize(); 
     try 
     { 
      sharedTest.LoginAdmin(); 
     } 
     finally 
     { 
      Playback.Cleanup(); 
     } 

    } 


    [ClassCleanup] 
    static public void ClassCleanup() 
    { 
     Playback.Initialize(); 
     try 
     { 
      sharedTest.LogoffClose(); 
     } 
     finally 
     { 
      Playback.Cleanup(); 
     } 
    } 

    #endregion 
+0

你能否解釋一下`Playback.Initialize()`和`Playback.Cleanup()`是做什麼的?應該對`Initialize`的調用以'IsInitialized`屬性爲條件嗎?爲什麼在動作完成後立即調用`Playback.Cleanup()`,而不是在測試套件的最後? – 2011-03-01 18:01:12

0

首先,你必須在你的codedUI類來定義新的UIMap

[CodedUITest] 
public class CodedUITest1 
{ 
    static private UIMap sharedTest = new UIMap(); 

    .... 

    [ClassInitialize()] 
    static public void ClassInit(TestContext context) 
    { 
     Playback.Initialize(); 
     try 
     { 
      sharedTest.RecordedStartApp(); 
     } 
     finally 
     { 
      Playback.Cleanup(); 
     } 
    } 

    [ClassCleanup()] 
    static public void ClassCleanup() 
    { 
     Playback.Initialize(); 
     try 
     { 
      sharedTest.RecordedCloseApp(); 
     } 
     finally 
     { 
      Playback.Cleanup(); 
     } 
    } 
}