我刚刚尝试过ASUnit,它并不成功,因此我在寻找更简单的东西,不需要花哨的用户界面。 跟踪输出很好。AS2的UnitTest框架?
ASUnit不是成功的,因为它有一些奇怪的原因 在/ Applications的所有子目录中生成AllTests.as文件。 我不知道如何阻止这种情况发生,所以我 寻找更简单的东西。我在ruby,C++和objective c中做了很多单元测试 ,所以它对我来说并不是全新的。
我的项目是针对Flash 9并使用ActionScript 2.我在Flash CS4中工作。
需要测试的代码是数学函数,它需要一个或两个浮点参数 并返回浮点值 ,因此非常适合测试。
任何想法?
更新:现在我写了我自己的测试代码,在这里。 quickndirty。
function run_tests(test_function_names:Array):Void {
trace("running tests");
var tests_passed:Number = 0;
var tests_failed:Number = 0;
var tests_total:Number = test_function_names.length;
for(var i=0; i<tests_total; ++i) {
var funname = test_function_names[i];
var fun = this[funname];
if(typeof fun != 'function') {
throw("ERROR: " + funname + " is not a function!");
return;
}
trace("testing .... " + funname);
try {
fun.call(this);
tests_passed += 1;
} catch(msg) {
trace("ERROR: " + funname + "\n" + msg);
tests_failed += 1;
}
}
if(tests_failed > 0) {
trace("" + tests_failed + " of " + tests_total + " tests failed.");
} else {
trace("All " + tests_total + " tests executed successfully");
}
}
public function assert_equal_float(v_expected:Number, v_actual:Number, v_precision:Number) {
if(v_actual == undefined) {
throw "v is undefined";
}
var v = v_expected - v_actual;
if(v < 0) v = -v;
if(v > v_precision) {
var s1:String = MYUtils.print_r(v_expected);
var s2:String = MYUtils.print_r(v_actual);
var s:String = "expected " + s1 + ", but got " + s2;
throw s.split("\n").join("");
}
}
public function test_a():Void {
assert_equal_float(2, 2, 0.01);
}
public function test_b():Void {
assert_equal_float(2.9999, 3.001, 0.01);
}
public function test_c():Void {
assert_equal_float(3, 3, 0.01);
}
function run():Void {
var test_function_names:Array = new Array(
"test_a",
"test_b",
"test_c"
);
run_tests(test_function_names)
}
输出是这样的:
running tests
testing .... test_a
testing .... test_b
testing .... test_c
All 3 tests executed successfully
出于兴趣,如果你的目标Flash Player 9和使用CS4为什么你在AS2编码? :) – Allan 2009-10-20 23:32:55
针对Flash Player 9是我正在开发的项目的一项要求。这是我的第一个Flash项目!我认为它不可能在Flash Player 9中使用AS3。很难找到AS2文档,大部分时间我遇到了Flex,Air,AS3信息。从C到AS,我真的很想念printf。没有可怕的内置正则表达式!希望AS3不那么痛苦。 – neoneye 2009-10-21 15:54:51