flex和后台打交道几乎都是异步方式的,我最近就在team里面负责service层(一些mvc框架里称作proxy层)的编码工作,撇开传统
的Alert,Trace等调试方式,决定引入正规的单元测试flexunit,但是对于异步操作来说,单元测试并非十分简单,网上找了些英文资料,实践
后整理一份教材供大家参考
关于flexunit的一些基础知识可以参考我的上一篇文章”利用flexunit进行单元测试一(同步测试)
“。
首先看一下我们的service类,这里为了便于演示代码使用HttpService方式
首先建一个xml作为访问资源
<domain>
<ip>
192.168.1.100</ip>
</domain>
随后建立一个方法使用httpService来访问这个xml资源
public
class
MyService
{
private
var
getDomainRetFun:
Function
;
public
function
getDomain(
retFun:
Function
)
:
void
{
getDomainRetFun = retFun;
var
service:
HTTPService = new
HTTPService(
)
;
service.url
= "assets/domain.xml"
;
service.addEventListener
(
ResultEvent.RESULT,getDomainHandler)
;
service.send
(
)
;
}
private
function
getDomainHandler(
evt:
ResultEvent)
:
void
{
if
(
evt.result!
=null
)
{
var
ip:
String
= evt.result.domain
.ip
getDomainRetFun(
ip)
;
}
else
{
getDomainRetFun(
"error"
)
;
}
}
}
接下来写testCase,我们可以看到这里使用了一个timer来延迟断言执行的时间。这里设置延迟3000毫秒,addAsync()函数是由
父类TestCase实现,设置的是3秒延迟过后需要执行的函数 第一个参数为 需要执行断言的 回调函数名
,第二个参数是timeout,第三个为传递给回调函数的参数,我们这里就设置前2个即可
public
class
MyServiceTest extends TestCase
{
private
var
timer
:
Timer
;
private
var
myService:
MyService;
public
function
MyServiceTest(
methodName:
String
=null
)
{
super
(
methodName)
;
}
override public
function
setUp(
)
:
void
{
timer
= new
Timer
(
3000
, 1
)
;
myService = new
MyService(
)
;
super
.setUp(
)
;
}
override public
function
tearDown(
)
:
void
{
timer
.stop
(
)
;
timer
= null
;
myService = null
;
super
.tearDown(
)
;
}
//设置一个临时变量来存放回调函数返回结果,以用于断言时候的比较
private
var
tmp:
String
= ""
;
public
function
testGetDomain(
)
:
void
{
timer
.addEventListener
(
TimerEvent
.TIMER_COMPLETE
,addAsync(
handleTimerComplete,5000
)
)
;
timer
.start
(
)
;
myService.getDomain(
getDomainCompelet)
;
}
private
function
getDomainCompelet(
ip:
String
)
:
void
{
tmp = ip;
}
private
function
handleTimerComplete(
evt:
TimerEvent
)
:
void
{
Assert.assertEquals(
"192.168.1.100"
,tmp)
;
}
}
ui方面加入suite后就就可以run test了
如果有错误则会提示
flexunit来测试异步或者测试事件还是有些繁琐的。有些时候还不如Alert来的简单明了,这一点上大家仁者见仁智者见智了。
ui开发方面的测试还是以视觉为准吧,至于那些看不见效果的service层或者util类上,使用flexunit来进行单元测试还是十分有必要的。
原文转自:http://blog.chinaunix.net/uid-366408-id-116441.html
分享到:
相关推荐
压缩包中的"flexunit-flexunit-4.1.0-2-g7d4c01c.zip"很可能就是FlexUnit 4.1.0的源码或库文件,开发者可以通过导入这个库到项目中,利用其提供的测试类和方法来构建和执行单元测试。 持续集成(Continuous ...
- **异步测试**:支持异步测试,这对于处理Flex中的事件驱动编程至关重要。 - **断言库**:提供丰富的断言方法,用于检查代码执行的结果是否符合预期。 - **测试套件**:可以组织多个测试用例到测试套件中,方便...
在提供的`flexunit详细简单用例.doc` 文档中,很可能会详细介绍如何使用FlexUnit进行单元测试,包括以下步骤: 1. **安装和配置**:首先,你需要将`flexunit.swc` 添加到你的Flex构建路径中,这可以通过在Flex ...
FlexUnit是针对Adobe Flex开发的一款专业测试框架,它为Flex应用程序提供单元测试的能力,使得开发者能够在编码阶段就发现和修复问题,从而提高软件质量和可靠性。FlexBuilder4(后来被称为Flash Builder)是Adobe...
这样你就可以利用其提供的API和特性进行测试。 创建测试用例时,你可以创建一个继承自`flexunit.framework.TestCase`的类,并在其中定义测试方法。测试方法通常以`test`开头,这些方法内部会调用`assertEquals()`、...
FlexUnit等单元测试框架允许开发者编写和执行单元测试用例,以验证Flex组件的正确性和性能。通过案例分析,如BankAccount类的测试,可以深入了解如何在Flex项目中实施单元测试。 #### Silverlight自动化测试 Test...
Flex当前炙手可热的RIA技术,FlexUnit使Flex开发的单元测试成为可能。FlexUnit的目标和思想与JUnit都是差不多的,在此不赘述。FlexUnit也经历了几个版本,目前最新的稳定版是1.0RC版,已经支持了标注式的test,非常...
FlexUnit是一个单元测试框架,用于测试ActionScript和Flex应用程序,而Ant是一个开源的构建工具,它使用XML来定义项目构建过程,包括编译、打包、测试等任务。 在Flex开发环境中,Ant经常被用来自动化构建流程,...
本文将对Flex测试进行深度探讨,同时结合源码分析和工具应用,帮助读者深化理解。 一、Flex测试基础 1.1 单元测试 在Flex中,我们可以使用FlexUnit库进行单元测试。FlexUnit提供了一套类似于JUnit的API,允许...
通过使用flex-unit包,Flex开发者能够更高效地进行单元测试,确保他们的代码在开发过程中得到充分验证,从而提高整体项目的质量和稳定性。此外,与Jenkins等CI工具的集成使得测试自动化成为可能,提高了开发效率,...
`fd-unit` 是一个专为FlashDevelop 4设计的插件,旨在帮助Flash开发者进行单元测试,特别是针对使用FlexUnit4框架的项目。FlashDevelop是一款流行的开源集成开发环境(IDE),主要用来编写ActionScript 3、Flex以及...