zoukankan      html  css  js  c++  java
  • FlexUnit单元测试(第二章FlexUnit基本应用)

    明白了测试的概念后,现在就介绍FlexUnit单元测试吧。FlexUnit可以说是Junit的一个复制,因为它们具有太多的相似性,不过说白了,其实所有的单元测试都是一个样,主要的方法就是通过输入来比较输出的结果是否正确。虽说原理是这么简单,但是一个好的单元测试框架,可以为编程人员带来很好的方便,在FlexUnit中,当然也有一个很有的框架。要使用FlexUnit,先须先下载FlexUnit.swc,这是一个集成的单元测试包,下载后导入即可使用。请先看看一个简单的例子:

           public class MyCircle

           {

                  private var _radiusX:int;

                  private var _radiusY:int;

                  private var _r:int;

                  private var _length:Number;

                  private var _area:Number;

                  public function MyCircle() {

                         this._r = 0;

                         this._radiusX = 0;  

                         this._radiusY = 0;

                         this._length = 0;

                         this._area = 0;

                  }

                  public function get radiusX():int { return _radiusX; }

                  public function set radiusX(value:int):void {

                         _radiusX = value;

                  }

                  public function get r():int { return _r; }

                  public function set r(value:int):void {

                         _r = value;

                  }

                  public function get radiusY():int { return _radiusY; }

                  public function set radiusY(value:int):void {

                         _radiusY = value;

                  }

                  public function get length():Number {

                         _length = 2 * _r * Math.PI;

                         _length = Math.round(_length);

                         return _length;

                  }

                  public function get area():Number {

                         _area = Math.PI * _r * _r;

                         return _area;

                  }

           }

    我们有一个待测试的类MyCircle,现在我们要测试两个函数:get length()(周长)、get area()(面积)。为了测试,我们编写了如下的测试类:

    import flexunit.framework.Assert;

           import flexunit.framework.TestCase;

           public class MyCircleTest extends TestCase

           {

                 

                  public function MyCircleTest(methodName:String) {

                         super(methodName);

                  }

                 

                  public function testLength():void{

                         var myCircle:MyCircle = new MyCircle();

                         myCircle.r = 50;

                         var result:Number = myCircle.length;

                         Assert.assertEquals(result,Math.round(Math.PI * 100));

                  }

                 

                  public function testArea():void{

                         var myCircle:MyCircle = new MyCircle();

                         myCircle.r = 50;

                         var result:Number = myCircle.area;

                         Assert.assertEquals(result,50*50*Math.PI+1);

                  }

           }

           MyCircleTest类是TestCase的一个子类,一般的情况下,我们都要继承TestCase这个类,TestCase运行多个测试方法的装置,有一个methodName的属性,表示用来测试的方法名, textLength()、textArea()分别的测试MyCirclelengtharea的方法。方法里,我们用到了Assert类,Assert可以说是一个用来判断结果的测试类,它提供了很多方法,如:

    assertEquals(),如何参数相等就运行正确,不等就会抛出一个错误

    assertNull( ) >判断参数是否为Null;

    assertUndefined( ) >判断参数是否未定义;

    在一切都建立好后,再编写mxml

    <?xml version="1.0"?>

    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"

    creationComplete="init()"

    xmlns:flexui="flexunit.flexui.*"

    >

           <mx:Script>

                  <![CDATA[

                  import flexunit.framework.TestSuite;

                  import flexunit.flexui.TestRunnerBase ;

                  private function init():void

                  {

                var suite:TestSuite = new TestSuite();

                suite.addTest(new MyCircleTest("testLength"));

                         suite.addTest(new MyCircleTest("testArea"));

                testRunner.test = suite;

                testRunner.startTest();

                  }

                  ]]>

           </mx:Script>

           <flexui:TestRunnerBase id="testRunner" width="100%" height="100%" />

    </mx:Application>

           在这里,我们定义了一个变量suite,它的类型为TestSuiteTestSuite是一个装载测试的容器,也就是说,我们的要把我们的测试类分别加到这个容器上,如:

           suite.addTest( new MyCircleTest( "testLength" ) );

    suite.addTest(new MyCircleTest("testArea"));

    new MyCircleest(“testLength”);语句中,我们那函数testLength()的方法名作为参数,那么在TestCase里,就把methodName属性赋值为”testLength”,那么就表明了在这个TestCase对象里,我们要调用的测试方法是testLength( )

    之后,我们新建一个TestRunnerBase类的实例testRunnerTestRunnerBasePanel的子类,那么它就是一个可显示的组件,它的test属性我们附值为suite,接着我们就可以开始测试了,也就调用testRunnerstartTest()函数。

    上图就是我们那见到的运行结果,如果测试全面通过,即图的右方会出现“√”的符号,如果测试不通过,就会出现如图所示:

    图右方的文字写出了错误的详细说明,通过它显示的数据,我们可以很清晰的看到那个类的那个方法出错,从而友好地帮助编程人员测试代码。

  • 相关阅读:
    用C++实现从键盘输入两个数a和b,求两数中的最大值
    MongoDB学习笔记-1
    linux 配置ip地址
    linux 配置jdk 环境变量
    VMware Linux 共享文件夹 虚拟机无共享文件解决方法
    数据库动态参数
    js
    js分页
    mysql存储过程
    webconfig 中配置上传文件大小
  • 原文地址:https://www.cnblogs.com/fxair/p/1710740.html
Copyright © 2011-2022 走看看