Visual studio 2010 如何将数据源添加到UIMap方法而不是测试方法(VS2010编码的UI测试)

Visual studio 2010 如何将数据源添加到UIMap方法而不是测试方法(VS2010编码的UI测试),visual-studio-2010,datasource,coded-ui-tests,Visual Studio 2010,Datasource,Coded Ui Tests,我有一个2010编码的UI测试,它对一个网站执行一些操作。我能够向“测试方法”添加一个数据源,该方法在每个记录中循环整个方法一次 但是,我真正想做的是只循环测试的一部分,这只是UIMap中一个记录的方法 假设测试方法如下所示: //[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\TestCommunities.xml", "Community", DataAccessMethod.S

我有一个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个方法都在数据源中按记录执行,这是我将数据源附加到测试方法(上面注释掉的部分)时发生的情况

有没有办法实现我在这里的目标


谢谢。

您必须使用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

您必须使用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

首先,您必须在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();
        } 
    }
}

首先,您必须在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();
        } 
    }
}

让我想想,我会用另一种方式问这个问题。。。如果不手工编写所有代码(我想使用一些内置的CUIT魔法),我是否能够通过数据源(而不是整个编码测试方法)仅循环编码UI测试方法的一部分。让我想想,我将以另一种方式问这个问题。。。如果不手工编写所有代码(我想使用一些内置的CUIT魔法),我是否能够通过数据源(而不是整个编码测试方法)仅循环编码UI测试方法的一部分。请您解释一下
Playback.Initialize()
Playback.Cleanup()
做什么?调用
Initialize
是否应以
IsInitialized
属性为条件?为什么在操作完成后立即调用
Playback.Cleanup()
,而不是在测试套件的最后调用?这里的“sharedTest”是什么?这是一个旧答案,但Playback.Initialize()和Playback.Cleanup()在测试前后运行。本例中的“sharedTest”是我调用的另一个测试方法。我写我的答案已经有几年了,现在开始使用SeleniumWebDriver(C#)代替VisualStudio2012,这对我来说更好。如果这没有帮助,很抱歉。请解释一下
Playback.Initialize()
Playback.Cleanup()?调用
Initialize
是否应以
IsInitialized
属性为条件?为什么在操作完成后立即调用
Playback.Cleanup()
,而不是在测试套件的最后调用?这里的“sharedTest”是什么?这是一个旧答案,但Playback.Initialize()和Playback.Cleanup()在测试前后运行。本例中的“sharedTest”是我调用的另一个测试方法。我写我的答案已经有几年了,现在开始使用SeleniumWebDriver(C#)代替VisualStudio2012,这对我来说更好。如果这没用,很抱歉。