2010-11-25 37 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(); 
     } 
    } 
}