原文: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}