Home > development > 利用flexunit进行单元测试一(同步测试)

利用flexunit进行单元测试一(同步测试)

先扯两句:

单元测试的重要性我就不扯了,现在都是分模块开发,如何保证你交给队友的模块是正确的,无bug的,对于项目整体开发效率提升来说尤为重要。

PS之前搞过junit或者testng的java程序员应该很容易上手这篇教程,只需侧重于异步测试部分的讲解即可

准备工作

下载flexunit类包,下载地址http://download.macromedia.com/pub/opensource/flexunit/flexunit0_9.zip

flexunit的”官方”站点位于

http://opensource.adobe.com/wiki/display/flexunit/FlexUnit ,你可以看到更为详细的英文development document

将下载的类包添加到项目中(*.swc)

用过junit等java单元测试工具的朋友会说,在eclipse下进行as3的单元测试,不需要安装什么plugins吗?

其实flexunit的开发人员就地取材,利用flex做了测试报告界面。

swc加载进project后,你会在你design界面的custom components里看到一些新组建,

这就是flexunit提供给我们的报告界面。

new一个application。将TestRunnerBase拖入

为这个mxml设置一个id = “testRunner”

假设我们接下来要对以下这个类中的add方法进行单元测试

package com.momoko.project.util
{
    public class MathUtil
    {
        public function add(a:Number,b:Number):Number
        {
            return a+b;
        }
    }
}

接下去我们写TestCase,我们可以重写setUp()和tearDown()方法来初始化和回收一些对象,注意testCase的构造函数必须这样实现。 另外你需要测试的function必须是无参的(flexunit和junit类似,不像testng这么灵活,如果你想要传递参数其实也是可以办到的,不过需要hack源码了), 写下断言后,这个testCase就ok了

public class MathUtilTest extends TestCase
{
    private var mathUtil:MathUtil;

    public function MathUtilTest(methodName:String=null)
    {
        super(methodName);
    }

    override public function setUp():void
    {
        mathUtil = new MathUtil();
        super.setUp();
    }

    public function testAdd():void
    {
        var a:Number = 1;
        var b:Number = 2;
        var sum:Number = a+b;
        Assert.assertEquals(sum,mathUtil.add(a,b));
    }

    override public  function tearDown():void
    {
        mathUtil = null;
        super.tearDown();
    }
}

然后我们回到之前的mxml中,加入如下代码。

import com.momoko.project.util.test.MathUtilTest;
import flexunit.framework.TestSuite;
private var suite:TestSuite;
//creationComplete="init()"
private function init():void
{
    testRunner.test = getSuite();
    testRunner.startTest();
}

private function getSuite():TestSuite
{
    suite = new TestSuite();
    suite.addTest(new MathUtilTest("testAdd"));
    return suite;
}

run application后你就会看到测试结果了

如果断言失败则显示错误信息,别与查错

Categories: development Tags: , ,