Visual studio 2010 如何将数据源添加到UIMap方法而不是测试方法(VS2010编码的UI测试)
我有一个2010编码的UI测试,它对一个网站执行一些操作。我能够向“测试方法”添加一个数据源,该方法在每个记录中循环整个方法一次 但是,我真正想做的是只循环测试的一部分,这只是UIMap中一个记录的方法 假设测试方法如下所示: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
//[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,这对我来说更好。如果这没用,很抱歉。