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

时间:2010-11-25 16:05:50

标签: visual-studio-2010 datasource coded-ui-tests

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

有没有办法实现我在这里要做的事情?

感谢。

2 个答案:

答案 0 :(得分:0)

您必须使用ClassInitialize和ClassCleanup方法。您可以将其放在底部的 #region附加测试属性区域中。所以对你来说它看起来像是:

    #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

答案 1 :(得分: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();
        } 
    }
}