关于FLEX 3.0的单元测试

本文详细介绍了如何使用FlexUnit库进行FLEX应用程序的单元测试,包括下载、安装、配置和编写测试用例的过程。通过创建测试类、引入类包、编写测试方法并利用元标签来组织测试流程,实现对目标类的功能验证。此外,通过FlexDemoApp.mxml文件整合测试视图组件,完成测试站点的构建和执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值