使用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']) |