1.
首先下载所需的包,地址:
http://tomorrow009.iteye.com/admin/blogs/579249
,
本文采用的是
4.0.0RC1.0
版本。
2.
将下载包解压后是一个名为
FlexUnit4TurnkeyRC_1.0
的
FLEX
工程,你可以直接导入到
FLEX BUIDER
中
作为参考示例。
3.
在
FLEX BUIDER
中建立一个项目,项目结构如下
最终截图:如附件图1
建立项目时需要将我们要用到的单元测试类包引入,类包路径为
FlexUnit4TurnkeyRC_1.0/ libs/ FlexUnit4.swc
和
FlexUnit4TurnkeyRC_1.0/ libs FlexUnit4UIListener.swc
。
最终截图:如附件图2
4.
bl.as
是将要进行单元测试的目标类,
testcase.as
是
bl.as
类测试用例类,
suite.as
则可以将
testcase
作为资源引入,当进行大规模的整体测试时,此种做法的优势显而易见。
5.
bl.as
代码如下:
package
bl
{
public
class
bl
{
public
function
bl()
{
}
public
function
add(a:Number,b:Number):Number{
return
a+b;
}
public
function
dec(a:Number,b:Number):Number{
return
a-b;
}
public
function
isTrue(a:Boolean):Boolean{
return
a;
}
public
function
isFalse(a:Boolean):Boolean{
return
a;
}
}
}
6.
testcase.as
代码如下
package
testcase
{
import
bl.bl;
import
org.flexunit.asserts.assertEquals;
import
org.flexunit.asserts.assertFalse;
import
org.flexunit.asserts.assertTrue;
public
class
testcase
{
private
static
var
b:bl;
public
function
testcase()
{
}
[BeforeClass]
public
static
function
runBeforeClass():
void
{
trace
(
"runBeforeClass"
);
b=
new
bl;
}
[AfterClass]
public
static
function
renAfterClass():
void
{
trace
(
"runAfterClass"
);
}
[Test]
public
function
aa():
void
{
assertEquals(3,b.add(1,2));
}
[Test]
public
function
bb():
void
{
assertEquals(3,b.dec(6,3));
}
[Test]
public
function
cc():
void
{
assertFalse(b.isFalse(
false
));
}
[Test]
public
function
dd():
void
{
assertTrue(b.isTrue(
true
));
}
}
}
这里用到的元标签
[BeforeClass]
、
[AfterClass]
、
[Test]
[BeforeClass]
的含义就是实例化此类之前先执行该标签指定的方法(该标签的第一个方法),所以我们需要将该标签指定的方法声明为
static.
[AfterClass]
的含义是当实例化此类之后,并且执行完此类的所有声明为
[Test]
的方法后,执行该标签制定的方法,所有此标签指定的方法也应该声明为
static.
所以该类的执行顺序为:
runBeforeClass()->testcase()->aa()->bb()->cc()->dd()->runBeforeClass();
testcase()
为构造函数
诸如
assertEquals()
等函数没有什么可讲的,如
junit
没什么不同。
7.
suite.as
代码如下
package
suite
{
import
testcase.testcase;
[Suite]
[RunWith(
"org.flexunit.runners.Suite"
)]
public
class
suite
{
public
var
_testcase:testcase;
public
function
suite()
{
}
}
}
标签是告诉编译器如何编译,不作为最终编译代码。
[Suite]
[RunWith(
"org.flexunit.runners.Suite"
)]
含义为是说这里为单元测试的代理站点。
这里将
testcase
测试用例类作为属性引入,如果你有多个测试用例,那你就可以声明多个属性。
8.
FlexDemoApp.mxml
代码
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="
http://www.adobe.com/2006/mxml
" layout="
absolute
" xmlns:flexUnitUIRunner="
http://www.adobe.com/2009/flexUnitUIRunner
" creationComplete="init()"
>
<mx:Script>
<![CDATA[
import
mx.controls.List;
import
suite.suite;
import
org.flexunit.listeners.UIListener;
import
org.flexunit.runner.FlexUnitCore;
public
var
core:FlexUnitCore;
public
function
init():
void
{
core=
new
FlexUnitCore();
core.addListener(
new
UIListener(testrunbase));
core.run(suite);
]]>
</mx:Script>
<flexUnitUIRunner:TestRunnerBase
width="
100%
" height="
100%
" id="
testrunbase
"
/>
</mx:Application>
FlexUnit
为我们提供的单元测试的视图组件(当然你可以也可以自己写视图组件,视情况而定),当组件加载完毕后,我们执行了
init()
方法,这个方法的作用是
首先创建一个视图组件监听器,即
new
UIListener(testrunbase)
,将该组件监听器做为参数传给
core.addListener()
方法,然后运行站点,当然你有多个站点,像如下运行
Core.run(suite1,suite2,...,suiteN);
最终截图:如附件图3
- 大小: 5.2 KB
- 大小: 29.6 KB
- 大小: 28.2 KB
分享到:
相关推荐
Flex 3 Flex 2 技巧 Flex编译器支持条件编译 ...精通Flex 3.0――4.7 ActionScript 3.0网络编程 精通Flex 3.0――4.7.1 加载服务端数据 精通Flex 3.0――4.7.2 基于Socket的连接 精通Flex 3.0――4.8 使用事件处理类
Flex3.0面试题Flex3.0面试题Flex3.0面试题Flex3.0面试题Flex3.0面试题
Flex3.0学习版快速入门提高版,简单轻松,操作容易。学习简单,很清楚地描述了怎么从零凯斯学习Flex的开发。
精通flex3.0 精通 Flex3.0 LCDS ActionScript 事件
完全自学flex3.0随书源码,目前正在学,随后上传学习笔记及实例.
flex3.0资源flex3.0资源flex3.0资源flex3.0资源flex3.0资源
ArcGIS API for Flex 3.0离线文档
精通Flex 3.0--基于ActionScript 3.0实现源码
由于上传限制在15M,所以只有打包成四个……资源来自网络,仅供学习参考。 //[完全手册Flex3.0RIA开发.part2/4.rar
FLASH-FLEX3.0开发教程中文版(例子源码)
FLEX 3.0程序开发技术详解(下).pdf
flex3.0资源1flex3.0资源1flex3.0资源1
《精通Flex 3.0——基于ActionScript 3.0实现》一书源代码。 Flex 3.0 ActionScript 3.0源代码 Flex 3.0源代码。 --------------------------- 第1篇 Flex技术概述 第1章 Flex概述 3 1.1 Flex简介 3 1.2 Flex...
想学习flex技术的同学多多捧场 很实用的教程
ArcGIS Viewer for Flex 3.0源码
Flex 3.0程序设计 学Flex 必备
Flex3.0 程序设计 学习Flex必备
Flex3.0破解包 可以对flex3.0进行破解具体方法请看包里的内容
F:\flex学习\Flex 3.0入门指南.iso
关于flex3.0的中英文学习资料,有兴趣的可以看看