(下)FlexMonkey将单元测试引入Flex用户界面开发

发表于:2009-9-23 13:59

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Stuart Stern    来源:InfoQ

  使用ActionScript生成测试

  除了交互性的创建和与运行测试外,我们还可以使用 FlexMonkey API 编程指定与xUnit框架如Fluint(http://fluint.googlecode.com)和FlexUnit 4(http://opensource.adobe.com/wiki/display/flexunit/FlexUnit)一起运行的测试。

  尽管可以使用FlexMonkey API完全地从头开始创建测试,然而我们其实使用FlexMonkey控制台来直接从以前录制的测试场景中创建基于ActionScript的测试。选择 “生成 AS3”菜单选项来为每一个套件和测试用例生成ActionScript类。每一个独立的测试都会导出成它对应的测试用例类中的方法。下面是我们的简单示例所生成的测试用例类。

package testSuites.MonkeyContactsSuite.tests {
    import com.gorillalogic.flexmonkey.events.MonkeyCommandRunnerEvent;
    import com.gorillalogic.flexmonkey.core.MonkeyTest;
    import com.gorillalogic.flexmonkey.monkeyCommands.*;
    import com.gorillalogic.flexmonkey.application.VOs.AttributeVO;
    import com.gorillalogic.flexmonkey.flexunit.tests.MonkeyFlexUnitTestCase;

    import mx.collections.ArrayCollection;

    import flash.events.IEventDispatcher;

    public class MonkeyContactsCase extends MonkeyFlexUnitTestCase{
 public function MonkeyContactsCase(){
     super();
 }

 private var mtTestAddNewContact:MonkeyTest = new MonkeyTest(null,
'TestAddNewContact', null, 500,
     new ArrayCollection([
  new UIEventMonkeyCommand('Input', 'inName', 'automationName', ['Fred']),
  new UIEventMonkeyCommand('Input', 'inPhone', 'automationName', ['555 555 1212']),
  new UIEventMonkeyCommand('Click', 'Add', 'automationName', ['0'])
  ]));

 private var mtTestAddNewContactTimeout:int = 8500;

 [Test]
 public function TestAddNewContact():void{
     // startTest(<MonkeyTest>, <Complete method>, <Async timeout value>,
<Timeout method>)
      startTest(mtTestAddNewContact, TestAddNewContactComplete,
mtTestIA1TimeoutTime, defaultTimeoutHandler);
 }

 public function TestAddNewContactComplete(event:MonkeyCommandRunnerEvent, passThroughData:Object):void{
      checkCommandResults(mtTestAddNewContact);
 }
    }
}

  测试中的每一个操作都生成出了一个UIEventMonkeyCommand。每一个命令都指定一个操作,属性/值对用以标识该操作以及操作相关参数所对应的目标组件。(所有可用的操作都在http://code.google.com/p/flexmonkey/wiki/FlexMonkeyCommand有记录。)在这个例子中,每一个UIComponent都使用了automationName 属性来标识,但正如上面提到的,我们可以使用任意的属性值对来替代。我们可以很轻松的修改这些脚本而无须重新录制。例如,我们可以通过将下述命令加入到数组中来实现在联系人管理中的ComboBox下选择电话类型为"Mobile"。

new UIEventMonkeyCommand('Select', 'inType', 'id', ['Mobile'])

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号