作为一个新特性,Flash Builder 4已经集成FlexUnit Test,使用起来很方便,下面我们就以一个Case来谈谈怎样在Flash Builder 4中进行Unit Test。
1. 准备工作。首先用Flash Builder 4在一个Flex工程新建一个类。如下面代码。
package
{
import flash.utils.ByteArray;
public class ObjectUtil
{
public static function clone(source:*):*
{
var ba:ByteArray = new ByteArray();
ba.writeObject(source);
ba.position = 0;
return ba.readObject();
}
}
}
这个工具类实现对象的深度clone,也就是被复制的目标对象不再是源对象的参照,改变目标对象不会影响源对象。因为ActionScript 3.0和Flex Framework中有不少内置对象,如Date、Object、Array、ArrayColection、BitmapData等,情况比较多,单元测试正好派上用场。
2. 创建新的FlexUnit TestCase 类。
选择该类>新建>TestCase 类,打开下图所示对话框,一般按默认设置就行了。如下图所示。
选择应为其生成测试方法存根的方法。如下图所示。
Flash Builder 4将自动为我们生成TestCase类和主程序文件的结构代码。在TestCase类中,已经有一个没有实现的测试方法testClone,为方便错误跟踪,我们修改成了四个测试方。如下代码所示。
public function testCloneObject():void
{
var obj:Object= {name:"Jim", age:25}
var newObj:Object = ObjectUtil.clone(obj);
newObj.age = 28;
assertObjectEquals(obj, {name:"Jim", age:25});
}
public function testCloneArray():void
{
var arr:Array= [1,2];
var newArr:Array = ObjectUtil.clone(arr);
newArr[1] = 3;
assertObjectEquals(arr, [1,2]);
}
public function testCloneCollection():void
{
var ac:ArrayCollection = new ArrayCollection([
{name:"Jim", age:28},
{name:"Tom", age:30}
]);
var newAC:ArrayCollection = ObjectUtil.clone(ac);
newAC.getItemAt(0).name = "Kite";
assertEquals(ac.getItemAt(0).name, "Jim");
}
public function testBitmapData():void
{
var bmd:BitmapData = new BitmapData(100,100,false);
bmd.setPixel(10,10,0xFF0000);
var newBMD:BitmapData = ObjectUtil.clone(bmd);
newBMD.setPixel(10,10,0x0000FF);;
assertEquals(bmd.getPixel(10,10), 0xFF0000);
}
注意,在FlexUnit 1 test中, 每个你创建的方法的方法名都必须以test开头, 这个是为了让测试运行器辨识需要测试的方法。
3. 创建新的FlexUnit Test Suite 类。选择该类>新建>TestSuie类,打开对话框,输入TestSuie类名,选择目标测试类和方法。如下图所示。
4. 修改主程序。
打开主程序mxml,做如下修改。
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:flexui="flexunit.flexui.*"
xmlns:mx="library://ns.adobe.com/flex/halo" minWidth="800" minHeight="600"
creationComplete="creationCompleteHandler()">
<fx:Script>
<![CDATA[
import flexUnitTests.UtilSuite;
private var flexUnitTests_UtilSuite_obj:flexUnitTests.UtilSuite;
protected function creationCompleteHandler():void
{
testRunner.test = UtilSuite.suite();
testRunner.startTest();
}
]]>
</fx:Script>
<flexui:TestRunnerBase id="testRunner"
width="100%" height="100%"/>
</s:Application>
5. 运行测试程序。
结果testBitmapData()方法测试失败:TypeError: Error #1034: 强制转换类型失败:无法将 Object@b9b5fb1 转换为 flash.display.BitmapData。
6. 修改错误。其实,BitmapData有自己的clone方法,我们只要将这个方法整合到ObjectUtil类中就行了。
打开ObjectUtil类,添加一个条件,最终代码如下。
public static function clone(source:*):*
{
var ba:ByteArray = new ByteArray();
ba.writeObject(source);
ba.position = 0;
if(source is BitmapData)
{
return (source as BitmapData).clone();
}
return ba.readObject();
}
回到第五步再进行测试,直到全部方法都通过。
另外,FlexUnit 4 test所用代码更简单,还支持元数据标签。通过运行方式>FlexUnit 测试,可以直接生成主程序代码。FlexUnit 4 test的界面是总结性的,很简单,还有就是FlexUnit 面版,大家有空可以试一下。
分享到:
相关推荐
FlashBuilder_4_7_LS10_win64.zip;FlashBuilder_4_7_LS10_win64.z01;FlashBuilder_4_7_LS10_win64.z02;FlashBuilder_4_7_LS10_win64.z03;FlashBuilder_4_7_LS10_win64.z04;FlashBuilder_4_7_LS10_win64.z05;Flash...
FlashBuilder_4_7_LS10_win64.zip;FlashBuilder_4_7_LS10_win64.z01;FlashBuilder_4_7_LS10_win64.z02;FlashBuilder_4_7_LS10_win64.z03;FlashBuilder_4_7_LS10_win64.z04;FlashBuilder_4_7_LS10_win64.z05;Flash...
FlashBuilder_4_7_LS10_win64.zip;FlashBuilder_4_7_LS10_win64.z01;FlashBuilder_4_7_LS10_win64.z02;FlashBuilder_4_7_LS10_win64.z03;FlashBuilder_4_7_LS10_win64.z04;FlashBuilder_4_7_LS10_win64.z05;Flash...
FlashBuilder4使用帮助,详细介绍了FlashBuilder4
第一章 Flash Builder 4 背景 1.1 从Flex Builder到Flash Builder 第二章 Flash Builder 4 界面 2.1 主界面 2.2 主菜单 2.3 工具条 2.4 主要窗口 ·第三章 Flash Builder 4 新特性 3.1 Package explorer 3.2...
第 4 章: 在 Flash Builder 中使用项目 在 Flash Builder 中创建项目 导出和导入项目 构建项目 运行和调试应用程序 导出应用程序的发行版 使用 Flash Builder 打包 AIR 应用程序 第 5 章: Flash Builder 中的...
FlashBuilder_4_7_LS10_win64.zip;FlashBuilder_4_7_LS10_win64.z01;FlashBuilder_4_7_LS10_win64.z02;FlashBuilder_4_7_LS10_win64.z03;FlashBuilder_4_7_LS10_win64.z04;FlashBuilder_4_7_LS10_win64.z05;Flash...
FlashBuilder3 FlashBuilder4 各种快捷键 方便使用 提高开发效率
FlashBuilder_4_7_LS10_win64.zip;FlashBuilder_4_7_LS10_win64.z01;FlashBuilder_4_7_LS10_win64.z02;FlashBuilder_4_7_LS10_win64.z03;FlashBuilder_4_7_LS10_win64.z04;FlashBuilder_4_7_LS10_win64.z05;Flash...
FlashBuilder4使用手册,很全面,很详细,而且还有在flashbuilder4中开发actionscript的示例项目,是很不错的学习资料,欢迎下载
FlashBuilder4组件的使用
Flash Builder 4 高速下载
FlashBuilder_4_7_LS10_win64.zip;FlashBuilder_4_7_LS10_win64.z01;FlashBuilder_4_7_LS10_win64.z02;FlashBuilder_4_7_LS10_win64.z03;FlashBuilder_4_7_LS10_win64.z04;FlashBuilder_4_7_LS10_win64.z05;Flash...
FlashBuilder_4_7_LS10_win64.zip;FlashBuilder_4_7_LS10_win64.z01;FlashBuilder_4_7_LS10_win64.z02;FlashBuilder_4_7_LS10_win64.z03;FlashBuilder_4_7_LS10_win64.z04;FlashBuilder_4_7_LS10_win64.z05;Flash...
FlashBuilder_4_7_LS10_win64.zip;FlashBuilder_4_7_LS10_win64.z01;FlashBuilder_4_7_LS10_win64.z02;FlashBuilder_4_7_LS10_win64.z03;FlashBuilder_4_7_LS10_win64.z04;FlashBuilder_4_7_LS10_win64.z05;Flash...
FlashBuilder_4_7_LS10_win64.zip;FlashBuilder_4_7_LS10_win64.z01;FlashBuilder_4_7_LS10_win64.z02;FlashBuilder_4_7_LS10_win64.z03;FlashBuilder_4_7_LS10_win64.z04;FlashBuilder_4_7_LS10_win64.z05;Flash...
《Flash builder 4 快速入门》+ 全部案例源码包 Flash builder 电子书教程,教你如何使用,开发项目含实例源码
使用FlashBuilder 4.7简体中文版
FlashBuilder_4_7_LS10_win64.zip;FlashBuilder_4_7_LS10_win64.z01;FlashBuilder_4_7_LS10_win64.z02;FlashBuilder_4_7_LS10_win64.z03;FlashBuilder_4_7_LS10_win64.z04;FlashBuilder_4_7_LS10_win64.z05;Flash...
Flash Builder 4 and Flex 4 宝典