`

利用flexunit进行单元测试二(异步测试)

    博客分类:
  • flex
 
阅读更多

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

分享到:
评论

相关推荐

    Flex持续集成之单元测试

    压缩包中的"flexunit-flexunit-4.1.0-2-g7d4c01c.zip"很可能就是FlexUnit 4.1.0的源码或库文件,开发者可以通过导入这个库到项目中,利用其提供的测试类和方法来构建和执行单元测试。 持续集成(Continuous ...

    flexunit-4.1.0_RC2-4-4.1.0.16076.zip,flexunit 4

    - **异步测试**:支持异步测试,这对于处理Flex中的事件驱动编程至关重要。 - **断言库**:提供丰富的断言方法,用于检查代码执行的结果是否符合预期。 - **测试套件**:可以组织多个测试用例到测试套件中,方便...

    flexunit 详细简单用例里面带有flexunit.swc包

    在提供的`flexunit详细简单用例.doc` 文档中,很可能会详细介绍如何使用FlexUnit进行单元测试,包括以下步骤: 1. **安装和配置**:首先,你需要将`flexunit.swc` 添加到你的Flex构建路径中,这可以通过在Flex ...

    FlexUnit,Flex调试专用插件!

    FlexUnit是针对Adobe Flex开发的一款专业测试框架,它为Flex应用程序提供单元测试的能力,使得开发者能够在编码阶段就发现和修复问题,从而提高软件质量和可靠性。FlexBuilder4(后来被称为Flash Builder)是Adobe...

    FlexUnit4熟悉与使用

    这样你就可以利用其提供的API和特性进行测试。 创建测试用例时,你可以创建一个继承自`flexunit.framework.TestCase`的类,并在其中定义测试方法。测试方法通常以`test`开头,这些方法内部会调用`assertEquals()`、...

    Web测试技术大全

    FlexUnit等单元测试框架允许开发者编写和执行单元测试用例,以验证Flex组件的正确性和性能。通过案例分析,如BankAccount类的测试,可以深入了解如何在Flex项目中实施单元测试。 #### Silverlight自动化测试 Test...

    FlexUnit4.1

    Flex当前炙手可热的RIA技术,FlexUnit使Flex开发的单元测试成为可能。FlexUnit的目标和思想与JUnit都是差不多的,在此不赘述。FlexUnit也经历了几个版本,目前最新的稳定版是1.0RC版,已经支持了标注式的test,非常...

    flexunit ant版本里面有ant的详细配置

    FlexUnit是一个单元测试框架,用于测试ActionScript和Flex应用程序,而Ant是一个开源的构建工具,它使用XML来定义项目构建过程,包括编译、打包、测试等任务。 在Flex开发环境中,Ant经常被用来自动化构建流程,...

    flex测试总结

    本文将对Flex测试进行深度探讨,同时结合源码分析和工具应用,帮助读者深化理解。 一、Flex测试基础 1.1 单元测试 在Flex中,我们可以使用FlexUnit库进行单元测试。FlexUnit提供了一套类似于JUnit的API,允许...

    flex-unit包

    通过使用flex-unit包,Flex开发者能够更高效地进行单元测试,确保他们的代码在开发过程中得到充分验证,从而提高整体项目的质量和稳定性。此外,与Jenkins等CI工具的集成使得测试自动化成为可能,提高了开发效率,...

    fd-unit:用于单元测试的FlashDevelop 4插件

    `fd-unit` 是一个专为FlashDevelop 4设计的插件,旨在帮助Flash开发者进行单元测试,特别是针对使用FlexUnit4框架的项目。FlashDevelop是一款流行的开源集成开发环境(IDE),主要用来编写ActionScript 3、Flex以及...

Global site tag (gtag.js) - Google Analytics