多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
Haxe标准库在 haxe.unit 包中提供基础的单元测试类。 ## 创建新的测试用例 首先,创建一个新的类,继承自 haxe.unit.TestCase ,并添加自己的测试方法。每个测试方法名字都是由 “test”开始。 ~~~ class MyTestCase extends haxe.unit.TestCase { public function testBasic() { assertEquals("A", "A"); } } ~~~ ## 运行单元测试 要运行测试, haxe.unit.TestRunner 的一个实例必须被创建。使用 add 方法添加 TestCase ,并调用 run 开始测试。 ~~~ class Main { static function main() { var r = new haxe.unit.TestRunner(); r.add(new MyTestCase()); // add other TestCases here // finally, run the tests r.run(); } } ~~~ 测试的结果大致如下: ~~~ Class: MyTestCase . OK 1 tests, 0 failed, 1 success ~~~ ## 测试函数 haxe.unit.TestCase 类有三个测试函数。 * `assertEquals(a,b)` 如果a和b相等则成功,a是测试的值,b是期望的值。 * `assertTrue(a)` 如果a为 true 则成功。 * `assertFalse(a)` 如果a 为 false 则成功。 ## 安装和拆卸 要在测试之前或之后运行代码,可以重载TestCase 中的 setup 和 tearDown 。 * setup 在每个测试运行之前调用。 * tearDown 在每个测试运行之后调用。 ~~~ class MyTestCase extends haxe.unit.TestCase { var value:String; override public function setup() { value = "foo"; } public function testSetup() { assertEquals("foo", value); } } ~~~ ## 比较复杂对象 使用复杂对象,可能难于生成预期的值来比较实际值。assertEquals 不做深度的对比也可能是一个问题。解决这些问题的一个方法是使用一个字符串作为预期的值,并对比它和使用 Std.string 转换为字符串的实际值 。下面是使用数组的一个简单示例: ~~~ public function testArray() { var actual = [1,2,3]; assertEquals("[1, 2, 3]", Std.string(actual)); } ~~~ 在API文档中查看 haxe.unit 包了解更多细节。