使用 ASUnit 单元测试框架对AS3进行单元测试

1. 下载 ASUnit 框架

到官网 http://www.asunit.org 下载框架源代码包。

2. 创建新项目

在 FlashDevelop 中创建一个新项目,具体方法参加 FlashDevelop 帮助手册。

3. 将 ASUnit 添加到项目中

在项目的属性面板中,切换到"Classpaths"选项,将 ASUnit 代码路径加入到项目的 classpaths 中,具体添加的应该是 ASUnit 代码包下的 as3\src 子目录。

添加 classpath 后 ASUnit 的代码将出现在项目树中:

4. 添加测试程序代码

首先为测试程序创建一个独立的一级子目录 tests(和src目录同级),与项目功能代码 src 隔离开更易于管理。在 tests 下创建子目录 src/test,test是包名,可以按个人喜好设置,比如与项目代码结构保持一致。

在 tests/src/test 目录下创建 AllTests.as 类文件,该类需要继承自 asunit.framework.TestSuite,需要执行的测试用例都在该类中添加,示例代码:

package test {
  import asunit.framework.TestSuite;

  /**
   * ...
   * @author Edward
   */
  public class AllTests extends TestSuite {

    public function AllTests() {
      super();
    }

  }

}

再创建一个具体的测试用例代码文件,例如:TestFirstTry.as,该类需要继承自 asunit.framework.TestCase,示例代码:

package test {
  import asunit.framework.TestCase;

  /**
   * ...
   * @author Edward
   */
  public class TestFirstTry extends TestCase {

    public function TestFirstTry(testMethod:String = null) {
      super(testMethod);
    }

    public function testIntegerMath():void {
      var i:int = 5;
      assertEquals(5, i);
      i += 4;
      assertEquals(9, i);
    }

    public function testFloatMath():void {
      var i:Number = 5;
      assertEqualsFloat(5, i, 0.001);
      i += 4;
      assertEqualsFloat(8, i, 0.001);
    }

  }

}

在 AllTests 中添加测试用例,在调用 TestSuite.addTest 方法时如果没有指定待测试的 TestCase 的某一具体方法名(TestCase 子类构造函数的参数),那么 TestCase 子类中所有方法名以 test 开头的都将被执行!这个特性很便于对功能模块进行整体测试。

public function AllTests() {
      super();
      addTest(new TestFirstTry());
      //addTest(new TestFirstTry("TestIntegerMath"));
      //addTest(new TestFirstTry("TestFloatMath"));
    }

最后,在 Main.as 中添加单元测试启动代码:

package {
  import flash.display.Sprite;
  import flash.events.Event;

  import asunit.textui.TestRunner;
  import test.AllTests;

  /**
   * ...
   * @author Edward
   */
  public class Main extends Sprite {

    public function Main():void {
      if (stage)
        init();
      else
        addEventListener(Event.ADDED_TO_STAGE, init);
    }

    private function init(e:Event = null):void {
      removeEventListener(Event.ADDED_TO_STAGE, init);

      var unit_tests:TestRunner = new TestRunner();
      stage.addChild(unit_tests);
      unit_tests.start(AllTests, null, TestRunner.SHOW_TRACE);
    }

  }
}

5. 执行单元测试

编译运行项目将看见下面的输出内容:

输出中显示有一个失败测试项,只要将 TestFirstTry.testFloatMath 方法中的 ‘8’ 改成 ‘9’ 就好了。

参考资料

时间: 2024-10-18 03:15:12

使用 ASUnit 单元测试框架对AS3进行单元测试的相关文章

[转] Python自动单元测试框架

一.软件测试 大型软件系统的开发是一个很复杂的过程,其中因为人的因素而所产生的错误非常多,因此软件在开发过程必须要有相应的质量保证活动,而软件测试则是保证质量的关键措施.正像软件熵(software entropy)所描述的那样:一个程序从设计很好的状态开始,随着新的功能不断地加入,程序逐渐地失去了原有的结构,最终变成了一团乱麻(其实最初的"很好的状态"得加个问号).测试的目的说起来其实很简单也极具吸引力,那就是写出高质量的软件并解决软件熵这一问题. 可惜的是,软件开发人员很少能在编码

Python的单元测试框架

一.软件测试 大型软件系统的开发是一个很复杂的过程,其中因为人的因素而所产生的错误非常多,因此软件在开发过程必须要有相应的质量保证活动,而软件测试则是保证质量的关键措施.正像软件熵(software entropy)所描述的那样:一个程序从设计很好的状态开始,随着新的功能不断地加入,程序逐渐地失去了原有的结构,最终变成了一团乱麻(其实最初的"很好的状态"得加个问号).测试的目的说起来其实很简单也极具吸引力,那就是写出高质量的软件并解决软件熵这一问题. 可惜的是,软件开发人员很少能在编码

Python自动单元测试框架

原文链接:http://www.ibm.com/developerworks/cn/linux/l-pyunit/ 软件的测试是一件非常乏味的事情,在测试别人编写的软件时尤其如此,程序员通常都只对编写代码感兴趣,而不喜欢文档编写和软件测试这类"没有创新"的工作.既然如此,为什么不让程序员在编写软件时自己加入一些用于测试的代码,使测试过程自动化呢?在软件工程中,这一技术称为自动单元测试,本文介绍在用Python开发软件时如何实现这一目标. 一.软件测试 大型软件系统的开发是一个很复杂的过

Python基础入门-unittest单元测试框架

unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者就总结下如何使用unittest单元测试框架来进行WEB自动化测试. 目录 一.unittest模块的各个属性说明 二.使用unittest框架编写测试用例思路 三.使用unittest框架编写测试用例实例 一.unittest模块的各个属性说明 先来聊一聊unittest模块的各个属性,所谓知己知

selenium2学习:单元测试框架(1)

1       单元测试框架 1.1     认识单元测试 Unittest提供了全局的main()方法,使用他可以方便地将一个单元测试模块变成可以直接运行的测试脚本.Main()方法使用testloader类来搜索所有包含在该模块中以"test"命名开头的测试方法,并自动执行它们. If __name__ == "___main__":直接使用 1.1.1      Test case 一个完整的测试流程,包括测试前准备环境的搭建(setUP).实现测试过程中的代

嵌入式单元测试--框架解析

1.单元测试的必要性 单元测试是软件开发的重要一环,尤其对嵌入式开发.因为嵌入式开发受限于开发环境.调试工具等因素,不能和纯PC软件开发一样使用很多先进的工具.这就需要开发者在开发过程中,进行更细的模块划分,更明确的接口,更详尽的测试.根据软件工程理论,1个bug越是在后期越是花费巨大的成本去修复,并且随着系统复杂度的增长,在一个大的系统中去查找某一个细节具体的问题,相比于在小的模块中去查找问题会花费多倍的时间成本. 2.单元测试框架解剖 一般地单元测试需要实现以下几个基本功能:1. asser

unittest单元测试框架总结

unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者就总结下如何使用unittest单元测试框架来进行WEB自动化测试. 目录 一.unittest模块的各个属性说明 二.使用unittest框架编写测试用例思路 三.使用unittest框架编写测试用例实例 一.unittest模块的各个属性说明 点击返回目录 先来聊一聊unittest模块的各个属

第 6 章 unittest 单元测试框架 - Selenium3 自动化测试

第 6 章 unittest 单元测试框架 单元测试是一项对技术要求很高的工作,只有白盒测试人员和软件开发人员才能胜任但用单元测试框架做单元测试却十分简单,而且单元测试框架不仅可以用来做单元测试,它还适用于不同类型的「自动化」测试. 1.提供测试用例组织和执行在 Python 中,我们编写的代码可以定义类.方法和函数,那么如何定义一条「测试用例」?如何灵活地控制这些「测试用例」的执行?单元测试框架会告诉我们. 2.提供丰富的断言方法当我们进行功能测试时,测试用例需要有预期结果.当测试用例的执行结

第六章:单元测试框架unittest

单元测试框架unittest 单元测试 单元测试(unit testing)是指对软件中的最小可测试单元进行检查和验证.对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等.总的来说,单元就是人为规定的最小的被测功能模块. 单元测试框架 在单元测试框架出现之前,开发人员在创建可执行测试时饱受折磨.最初的做法是在应用程序中创建一个窗口,配有"测试控制工具(harness)".它只是一