我是encodeUI的新手,一开始我正在阅读很多应该是最佳实践的内容。 我已经读过,如果您使用的是建议使用多个UImaps的复杂应用程序。虽然我现在看不到一个好处,但是我用两个UImaps创建了一个小项目。
在第一个初始设置中(使用初始UImap和CodedUITest1),我可以选择是使用“测试”构建器还是使用现有操作记录来生成代码。我做了什么'去'到初始的UImap。当我创建新UI时,启动测试构建器并且我可以记录一些操作,当我保存它时,它会被添加到我创建的新设置的UImap中,名为AdvanceSettings。但我无法从现有录音中生成代码。这是为什么?我想基于带有录音的手动测试案例创建自动化测试用例。
以下是我的代码。我正在为两个UImaps使用CodedUITest1类。我应该使用新课吗? 每个UImap?
如果您对代码有一些评论,请写一些。
我看到了。如果您有复杂的应用程序,则使用多个UImaps,以便您可以更轻松地更改某些内容。每个GUI元素都有一个UImap,因此如果GUI上的某些内容发生变化,您只需编辑该UImap。但是如果你有一个UImap并使用正确的命名,你也可以轻松地替换或重新记录某些方法。所以我错过了多个UImaps的大图。
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Windows.Input;
using System.Windows.Forms;
using System.Drawing;
using Microsoft.VisualStudio.TestTools.UITesting;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.VisualStudio.TestTools.UITest.Extension;
using Keyboard = Microsoft.VisualStudio.TestTools.UITesting.Keyboard;
using EAEP.AdvanceSettingsClasses;
namespace EAEP
{
/// <summary>
/// Summary description for CodedUITest1
/// </summary>
[CodedUITest]
public class CodedUITest1
{
public CodedUITest1()
{
}
[TestInitialize]
public void InitializationForTest()
{
this.UIMap.AppLaunch();
}
[TestMethod]
public void MainGUIMethod()
{
// To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.
// For more information on generated code, see http://go.microsoft.com/fwlink/?LinkId=179463
this.UIMap.AssertMethod1();
this.UIMap.RestoreDefaults();
this.UIMap.AssertMethod1();
}
[TestMethod]
public void AdvanceSettignsWindowMethod()
{
AdvanceSettings advanceSettings = new AdvanceSettings();
advanceSettings.MoreSettingsReopenedAfterCancel();
this.UIMap.AssertVerificationAfterCancel();
advanceSettings.MoreSettingsReopenedAfterOK();
this.UIMap.AssertVerificationAfterOK();
}
#region Additional test attributes
// You can use the following additional attributes as you write your tests:
////Use TestInitialize to run code before running each test
//[TestInitialize()]
//public void MyTestInitialize()
//{
// // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.
// // For more information on generated code, see http://go.microsoft.com/fwlink/?LinkId=179463
//}
////Use TestCleanup to run code after each test has run
//[TestCleanup()]
//public void MyTestCleanup()
//{
// // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.
// // For more information on generated code, see http://go.microsoft.com/fwlink/?LinkId=179463
//}
#endregion
public TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
}
private TestContext testContextInstance;
public UIMap UIMap
{
get
{
if ((this.map == null))
{
this.map = new UIMap();
}
return this.map;
}
}
private UIMap map;
}
}
答案 0 :(得分:0)
拥有多个UIMaps可加快测试执行速度。此外,这使得版本,断言,属性和设置变得更加容易。
要为第二个UIMap创建测试,只需右键单击它并按“使用编码的UI测试生成器编辑”
关于But I can not generate code from existing recording. Why is that?
我不知道 - 你是什么意思can not
?
答案 1 :(得分:0)
您不能将多个UI地图与现有录制功能结合使用。此功能始终在名为UIMap的地图中生成代码。我在关于将specflow与Coded Ui测试集成的博客文章中解释了一些关于这些限制的内容
http://rburnham.wordpress.com/2011/05/30/record-your-coded-ui-test-methods/
如果您想使用Multiple UIMaps以获得更好的可维护性,则必须使用此方法
它的局限性使得MTM集成的优点毫无意义。