FlexUnit单元测试

原文:http://www.lifelaf.com/blog/?p=141


FlexUnit是FlashBuilder所自带的单元测试框架,从FlexUnit4.0开始,Test Case由[Test]元数据来指定,Test Case函数不再需要遵循任何命名规范(FlexUnit 4.0之前,Test Case函数名必须以”test”开头)。同时,Test类也不再需要从任何框架类进行继承。下面是两个简单的Test Case:

[Test]
public function addition():void{
    assertEquals(12, simpleMath.add(7,5));}[Test]publicfunction subtraction():void{
    assertEquals(9, simpleMath.subtract(12,3));}

 

Before与After

有时候对于Test Case,我们需要在运行Case之前进行一些测试环境的搭建工作,而在测试完成之后又需要对测试用例进行收尾。在FlexUnit 4.0之前,这部分内容是通过覆写setup()方法与teardown()方法来完成的。FlexUnit 4.0引入了Before元数据与After元数据,从而使测试的准备与收尾工作更加灵活 — 任何标记有Before的函数都会在每一个Test Case执行前运行,而任何标记有After的函数都会在每一个Test Case执行后运行:

[Before]
public function runBeforeEveryTest():void{
    simpleMath =newSimpleMath();}[Before]publicfunction alsoRunBeforeEveryTest():void{
    simpleMath1 =newSimpleMath();}[After]publicfunction runAfterEveryTest():void{
    simpleMath =null;
    simpleMath1 =null;}

对于多个Before函数的情况,我们可以通过指定order参数来确定函数的执行顺序:

[Before(order=1)]
public function runFirst():void{//...}[Before(order=2)]publicfunction runSecond():void{//...}

为了遵循FlexUnit 4.0之前版本的使用习惯,Before函数与After函数一般命名为setup()与teardown():

[Before]
public function setup():void{//...}[After]publicfunction teardown():void{//...}

 

BeforeClass与AfterClass

标记有Before或者After元数据的函数会在每一个Test方法执行前后运行,而BeforeClass和AfterClass元数据则允许定义静态函数在整个测试类执行前后运行:

[BeforeClass]
public static function runBeforeClass():void{//run for one time before all test cases.}[AfterClass]publicstaticfunction runAfterClass():void{//run for one time after all test cases.}

与Before/After元数据一样,可以定义多个BeforeClass/AfterClass函数,并通过指定order参数来控制函数的运行顺序。

 

测试异常

在传统的单元测试中,异常的捕捉与测试可以通过try/catch来实现:

[Test]
public function testIOError():void{try{//code causes an IOError}catch(err:IOError){
        assertEquals(true,true);}

    assertEquals(true,false);}

在FlexUnit 4.0中,Test元数据接受expects参数,从而可以快速的进行异常测试:

[Test(expects="flash.error.IOError")]
public function testIOError():void{//code causes an IOError}
 

相关推荐