利用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后你就会看到测试结果了

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

